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

Ric*_*ard 8 python django oauth django-authentication

我正在使用Django和django-allauth进行社交认证.

我已经启动并运行身份验证,但是任何人都可以举例说明如何:

  • 显示已登录用户的名称和头像
  • 将一些信息添加到用户的帐户?

例如,在主页上,我有

{% if user.is_authenticated %}
<li><a href="{% url account_logout %}?next=/">Logout</a></li>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

这正确地显示了Logout链接,但是我如何添加用户的名字和头像?

像(伪代码)的东西:

<p>You're logged in with {{ user.account_provider? }} as {{ user }}.</p>
<img src="{{ user.avatar_url }}" />
Run Code Online (Sandbox Code Playgroud)

然后,如果我想为用户的个人资料添加额外的属性,我该怎么办?我应该使用其他一些Django用户相关的应用程序吗?

谢谢你的帮助.

Bid*_*rai 6

一个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 源


lig*_*lig 5

如果你看一下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="{{ user.get_avatar_url }}" />
Run Code Online (Sandbox Code Playgroud)

  • 我有allauth.socialaccount.context_processors.socialaccount上下文处理器激活,它在上下文中放置一个'socialaccount'字典; 此dict中的条目是活动提供者.我没有看到这个(或SocialAccount模型)如何修改用户对象,但允许访问"{{user.get_provider}}".我完全错过了你的观点,也许吧?对不起,我对allauth,django和python相对较新,所以我可能会遗漏一些明显的东西. (2认同)