【问题标题】:Django User Logout Fails to Redirect HomepageDjango 用户注销无法重定向主页
【发布时间】:2015-08-30 03:05:53
【问题描述】:

在我的 django web 应用程序中注销用户后,重定向的主页仍然显示“注销”按钮而不是“使用 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')

【问题讨论】:

    标签: python django redirect


    【解决方案1】:

    这里有两件事:

    1. 您需要重新排序 URL

    来自:

    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 的注销 URL 模式

    1. 您应该为导入的 logout 设置别名,或者将您的 logout 重命名为其他名称。

    例子:

    from django.contrib.auth import logout as auth_logout
    

    然后

    def logout(request):
        auth_logout(request)
    
        ....
    

    【讨论】:

    • 嗨 Karthikr,我将其标记为已接受。感谢您快速有效的回答。你会推荐一些开源的 django web 应用程序供我学习吗?我在网上搜索,但答案多种多样。这个问题在stackoverflow上被多次询问。所以我把它作为评论,我相信你有有价值的答案。
    • 我发现 djangogirls 的教程非常好 (github.com/djangogirls/tutorial)。另外,我建议您查看一个框架项目 - 例如:github.com/rdegges/django-skel 并尝试在其上编写代码。这样,它可以让您了解框架等。
    • 太棒了!有什么推荐的书吗? 《姜戈探戈》这本书?还是“带有示例的 Django”?
    • 完全由你决定。我个人不是那种会读书之类的人。
    猜你喜欢
    • 2014-02-10
    • 2010-11-19
    • 2014-04-07
    • 1970-01-01
    • 2015-08-09
    • 2019-02-28
    • 2019-05-28
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多