I'm using Django with django-allauth for social authentication.
I have authentication up and running, but can anyone give simple examples of how to:
- show the name and avatar of a logged-in user
- add some information to a user's account?
For example, on the home page, I've got
{% if user.is_authenticated %}
<li><a href="{% url account_logout %}?next=/">Logout</a></li>
{% endif %}
That's showing the Logout link correctly, but how would I add the user's name and avatar?
Something like (pseudocode):
<p>You're logged in with {{ user.account_provider? }} as {{ user }}.</p>
<img src="{{ user.avatar_url }}" />
Then, if I want to add extra properties to the user's profile, what do I do? Should I be using some other Django user-related app?
Thanks for your help.
If you look at django-allauth source https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/models.py#L7
This is an abstract model that represents all the methods all other specific service models have. Thus you could write
<p>You're logged in with {{ user.get_provider }} as {{ user }}.</p>
<img src="{{ user.get_avatar_url }}" />
A SocialAccount
model instance is available for users who signed up using their social account.
In your template, you can simply write:
Avatar URL: {{ user.socialaccount_set.all.0.get_avatar_url }}
UID: {{ user.socialaccount_set.all.0.uid }}
Date Joined: {{ user.socialaccount_set.all.0.date_joined}}
Last Login: {{ user.socialaccount_set.all.0.last_login}}
And for Full Name: {{ user.socialaccount_set.all.0.extra_data.name }}
For more information: Django allauth source
you can make for loop in set of socialaccount within foreignkey to user class, in the template it's something like below :
{% for account in user.socialaccount_set.all %}
{% comment %} show avatar from url {% endcomment %}
<h2 style="text-transform:capitalize;">{{ account.provider }} account data</h2>
<p><img width="50" height="50" src="{{ account.get_avatar_url }}"/></p>
<p>UID: <a href="{{ account.extra_data.link }}">{{ account.uid }}</a></p>
<p>Username: {{ account.extra_data.username }}</p>
<p>First Name: {{ account.extra_data.first_name }}</p>
<p>Last Name: {{ account.extra_data.last_name }}</p>
<p>Dashboard Link:
<a href="{{ account.extra_data.link }}">{{ account.extra_data.link }}</a></p>
{% empty %}
<p>you haven't any social account please</p>
{% endfor %}
来源:https://stackoverflow.com/questions/8477530/how-to-access-user-names-and-profiles-with-django-allauth