如何使用django-allauth访问用户名和配置文件

时间:2011-12-12 16:33:37

标签: python django oauth django-authentication

我正在使用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用户相关的应用吗?

感谢您的帮助。

2 个答案:

答案 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 %}