在我的django网络应用程序中注销用户后,重定向的主页仍显示“注销”按钮,而不是“使用Facebook登录”。在下面的代码中,我按照django文档注销用户并将页面重定向到主页,即base.html。在注销后,我的网络应用程序似乎仍然具有user.is_authenticated为True?我错过了什么?
我在网上找不到任何有用的提示。任何评论都非常感谢。
以下是我的模板html
的一部分<div class="navbar-form navbar-right">
{% if user.is_authenticated %}
<a id="logout" href="/accounts/logout" class="btn btn-success">Logout</a>
{% else %}
<a id="facebook_login" href="/accounts/facebook/login" class="btn btn-success">Sign in with Facebook</a>
{% endif %}
</div>
这是我的urls.py
url(r'^$', 'homepage.views.home', name='home'),
url(r'^accounts/', include('allauth.urls')),
url(r'^accounts/logout/$', 'homepage.views.logout', name='logout'),
这是我的主页/ views.py
# Create your views here.
def home(request):
return render(request, "base.html", {})
# ensure only logged in users can access the view.
@login_required
def logout(request):
logout(request)
# Take the user back to the homepage.
return redirect('home')
答案 0 :(得分:1)
这里有两件事:
从:
url(r'^accounts/', include('allauth.urls')),
url(r'^accounts/logout/$', 'homepage.views.logout', name='logout'),
到
url(r'^accounts/logout/$', 'homepage.views.logout', name='logout'),
url(r'^accounts/', include('allauth.urls')),
这样,您的注销优先于allauth的注销网址模式
logout
设置别名,或将logout
重命名为其他内容。示例:
from django.contrib.auth import logout as auth_logout
然后
def logout(request):
auth_logout(request)
....