Django用户身份验证不起作用

pro*_*ype 1 authentication django

我正在使用django的默认模型User(因为我使用的是django-facebook),并且用户身份验证在模板中不起作用.这是代码:

{% if request.user.is_authenticated %}
   Welcome, {{ request.user.first_name }}
   <a href="/logout">logout</a>
{% else %}
   <form action="{% url facebook_connect %}?facebook_login=1" method="post">
        <a href="javascript:void(0);" style="font-size: 20px;" onclick="F.connect(this.parentNode);">
             <img src="/media/images/site/facebook_login.png" alt="facebook_login" class="facebook_login_button"/>
        </a>
        <input type="hidden" value="{{ request.path }}" name="next" />
   </form>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

我从视图中传递了context_instance:

return render_to_response('index.html', context, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

但它仍然无法奏效.谢谢你的帮助!

编辑:

用户使用django-facebook成功登录(插入到auth_user表中)并显示他的数据,但是当用户注销时,他的数据消失,并且上面编辑的代码中显示的登录表单未显示!

以下是我用于登录和注销用户的完整视图:

def logout_view(request):
    logout(request)
    return HttpResponseRedirect('/')

def signin(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            return HttpResponseRedirect('/')
        else:
            # TO RETURN ERROR
            return HttpResponseRedirect('/')
    else:
        # TO RETURN ERROR
        return HttpResponseRedirect('/')
Run Code Online (Sandbox Code Playgroud)

如果我从request.user.first_name中删除请求,则会出现错误:

您需要在项目设置中设置AUTH_PROFILE_MODULE

这是关于我可以得到的所有细节..

pro*_*ype 5

我不知道为什么request.user.is_authenticated不工作但我找到了解决方案 - 使用

{% if not user.is_anonymous %}

代替

{% if request.user.is_authenticated %}

似乎可以做到这一点.if工作且仅登录用户将显示其信息和注销按钮.