Използвам Django с django-allauth за социална идентификация.
Имам автентификация и се изпълнявам, но може ли някой да даде прости примери как:
- показват името и аватара на регистрирания потребител
- добавяте информация към потребителския профил?
Например, на началната страница имам
{% if user.is_authenticated %}
<li><a href="{% url account_logout %}?next=/">Logout</a></li>
{% endif %}
Това показва връзката Изход правилно, но как бих добавил името и аватара на потребителя?
Нещо като (псевдокод):
<p>You"re logged in with {{ user.account_provider? }} as {{ user }}.</p>
<img src="/images/{{ user.avatar_url }}" />
След това, ако искам да добавя допълнителни свойства към потребителския профил, какво да правя? Трябва ли да използвам друго приложение, свързано с потребителя на Django?
Благодаря за вашата помощ.
Отговори:
5 за отговор № 1Ако погледнете в django-allauth източник https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/models.py#L7
Това е абстрактен модел, който представя всички методи, които имат всички други специфични модели на обслужване. Така можете да пишете
<p>You"re logged in with {{ user.get_provider }} as {{ user }}.</p>
<img src="/images/{{ user.get_avatar_url }}" />
1 за отговор № 2
А SocialAccount
моделът на модела е достъпен за потребители, които са се регистрирали с помощта на социалната си сметка.
В шаблона си можете просто да напишете:
URL адрес на аватар: {{ user.socialaccount_set.all.0.get_avatar_url }}
UID: {{ user.socialaccount_set.all.0.uid }}
Дата на присъединяване: {{ user.socialaccount_set.all.0.date_joined}}
Последно влизане: {{ user.socialaccount_set.all.0.last_login}}
И за Пълно име: {{ user.socialaccount_set.all.0.extra_data.name }}
За повече информация: Източник на Django allauth
-1 за отговор № 3
можете да направите за цикъл в набор от Socialaccount в рамките на класа на Foreignkey към потребителския клас, в шаблона е нещо като:
{% 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="/images/{{ 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 %}