【发布时间】:2020-01-05 00:46:40
【问题描述】:
我在 Django 项目中添加了django-allauth,我可以在网站上使用 GitHub 进行身份验证。
用户认证后,我想获取GitHub用户名(登录的用户)。
怎么做?
【问题讨论】:
标签: python django python-3.x github django-allauth
我在 Django 项目中添加了django-allauth,我可以在网站上使用 GitHub 进行身份验证。
用户认证后,我想获取GitHub用户名(登录的用户)。
怎么做?
【问题讨论】:
标签: python django python-3.x github django-allauth
allauth 设置的用户名与 github 返回的用户名不同,它是函数 generate_unique_username 返回的值,请参见 sourcecode,因此您应该更好地访问 SocialAccount 的 extra_data 字段,下面是示例视图,显示了如何访问它。
from django.shortcuts import HttpResponse, render
from allauth.socialaccount.models import SocialAccount
def home(request):
if request.user.is_authenticated:
try:
social_account=SocialAccount.objects.get(user=request.user).extra_data
return HttpResponse(social_account['login'])
except SocialAccount.DoesNotExist: # user created with email and password
return HttpResponse(request.user.username)
return HttpResponse("<a href='/accounts/github/login/'>Sign Up</a>")
【讨论】:
{% for account in user.socialaccount_set.all %}
<p>Username: <a target="_blank"
href="{{ account.extra_data.html_url }}">{{ account.extra_data.login }}</a>
</p>
{% endfor %}
extra_data.login - 显示 GitHub 的登录信息。
【讨论】: