我正在使用Django和django-allauth进行社交认证。
我已启动并运行身份验证,但任何人都可以举例说明如何:
例如,在主页上,我有
{% if user.is_authenticated %}
<li><a href="{% url account_logout %}?next=/">Logout</a></li>
{% endif %}
正确显示Logout链接,但我如何添加用户名和头像?
像(伪代码):
<p>You're logged in with {{ user.account_provider? }} as {{ user }}.</p>
<img src="{{ user.avatar_url }}" />
然后,如果我想为用户的个人资料添加额外的属性,我该怎么办?我应该使用其他一些与Django用户相关的应用吗?
感谢您的帮助。
答案 0 :(得分:5)
如果你看一下django-allauth source 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="{{ user.get_avatar_url }}" />
答案 1 :(得分:0)
你可以在foreignkey中将socialaccount的循环设置为用户类,在模板中它就像下面这样:
{% 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 %}