将Python社会身份验证用户名传递到Vi

2024-09-30 10:31:09 发布

您现在位置:Python中文网/ 问答频道 /正文

用户可以使用Python Social Auth登录Facebook

我已经确认,Facebook的数据可以通过在我的一个模板中使用这个来获得

{% if user and not user.is_anonymous %}
   <p class="navbar-text"><a href="/recommendations/{{user.username}}">{{ user.username }}!</a></p>
   <p class="navbar-text"><a href="/logout">Logout</a></p>
{% else %}
<a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}"><button type="button" class="btn btn-default navbar-btn">Sign in with Facebook</button></a>
{% endif %}

但是当我试着打电话的时候用户名在下面这样的视图中,它返回一个错误。你知道吗

def personalised(user):
    return HttpResponse(user.username)

错误:

'WSGIRequest' object has no attribute 'username'

我相信这是来自我的urls.py设置

从django.conf.url文件导入模式,url,include 从soundshelterapp导入视图

urlpatterns = patterns('soundshelterapp.views',
    url(r'^$', views.home, name='home'),
    url(r'^personalised$', views.personalised, name='name'),
    url(r'^social/', include('social.apps.django_app.urls', namespace='social')),
    url(r'^login/$', 'login',name='login'),
    url(r'^logout/$', 'logout',name='logout')
    )

Tags: nameurlfacebookusernameloginsocialbuttonviews
2条回答

我以前喜欢用usernme

def personalised(request):
    current_user = request.user

您混合了上下文变量和Django视图。personalised是Django视图,它的参数是request对象,而不是您正在执行的user。你知道吗

模板中的{{user}}是因为^{}在表示当前登录用户的上下文中添加了user变量。由于用户是loggedin,request.user属性将设置为已登录的用户,然后您可以使用request.user.username访问username。你知道吗

def personalised(request): # request object is passed to a view
    username = request.user.username # get the username of logged-in user
    return HttpResponse(username) # return response

相关问题 更多 >

    热门问题