如何配置在Django中注销后重定向到哪里?
Posted
技术标签:
【中文标题】如何配置在Django中注销后重定向到哪里?【英文标题】:How to configure where to redirect after a log out in Django? 【发布时间】:2011-07-15 23:10:18 【问题描述】:只是想知道我可以在哪里设置 url 以在注销后重定向到。我知道你可以设置登录网址。我想重定向到我的主页。
【问题讨论】:
【参考方案1】:在您的项目 setting.py 文件中添加以下行:
ACCOUNT_LOGOUT_REDIRECT_URL = '/'
【讨论】:
【参考方案2】:在你的项目 setting.py 文件中添加这个
LOGOUT_REDIRECT_URL = '/'
您可以在 '' 之间写下您的网址 我使用我的索引页面进行注销默认重定向
【讨论】:
【参考方案3】:如果您定义了自己的 url(而不是导入的通用 auth url)并且正在使用标准的 django auth 视图,您可以简单地在路径中添加 (template_name='example.html')。
path('logout/',auth_views.LogoutView.as_view(template_name='homepage.html'),name="logout")
【讨论】:
【参考方案4】:现代 Django (2017+?) 有一个名为 LOGOUT_REDIRECT_URL
的设置。
老 Django / 原始答案
您无需覆盖或包装任何内容。
根据文档,您可以将 next_page
参数提供给注销视图。
https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout
(r'^logout/$', 'django.contrib.auth.views.logout',
'next_page': '/successfully_logged_out/')
【讨论】:
如果您已对所有身份验证 URL 进行了通用导入,这将不起作用。更容易使用下面@YeRuizhi的答案 @RunLoop 我赞成这种其他方法。唯一的问题是您必须记住每次构建所述链接时都使用它。因此,如果这在标准构建中有效,它会更可靠。如果不是,那么下一个最简单的解决方案是有意义的。 我无法理解如何从视图中反转此网址。 这是一个很棒的解决方案。我将其推回登录页面。有没有办法通过这条线添加系统消息?以便创建一个弹出窗口? “您已成功退出” 'next page' URL 开头的正斜杠:'/successfully_logged_out/' 至关重要,没有它,Django 会尝试将“logout” URL 与“successfully_logged_out” URL 连接起来,这会创建一个新的“非法”网址。如果您想在用户注销后向他们展示您的登录页面,这会让生活变得有点困难。【参考方案5】:您可以在 setting.py 文件中使用 LOGOUT_REDIRECT_URL 将用户重定向到任何地方
LOGOUT_REDIRECT_URL = 'url name to redirect'
【讨论】:
【参考方案6】:重定向到当前页面
<a href="% url 'logout' %?next= request.path | urlencode ">% trans "Logout" %</a>
在 Django 1.9 中测试。
另请参阅:Is it possible to pass query parameters via Django's % url % template tag?
【讨论】:
谢谢,这对我有帮助,以防 LOGOUT_REDIRECT_URL 没有(因为我在测试和生产环境中有不同的路径)。【参考方案7】:从 Django 1.10 开始,你可以定义一个LOGOUT_REDIRECT_URL
(see the docs)
【讨论】:
【参考方案8】:如果你想在客户端设置重定向 URL,你可以在urls.py
:
(r'^management/logout/$', 'django.contrib.auth.views.logout'),
然后在模板中:
<a href="% url 'django.contrib.auth.views.logout' %?next=/">
Log out
</a>
next
所在的地方,你指向正确的 URL。
【讨论】:
【参考方案9】:您甚至可以为下一个参数使用命名网址:
<a href="% url 'auth_logout' %?next=% url 'homepage' %"> Logout</a>
【讨论】:
【参考方案10】:一种更简单的方法:
将“下一个”参数添加到您的注销请求网址。例如:
<a href="% url 'auth_logout' %?next=/path_to_the_page"> Logout</a>
然后注销视图将为您解决问题。
登录后重定向,只需在settings.py中设置即可:
LOGIN_REDIRECT_URL = '/path_to_the_page'
LOGIN_URL = '/path_to_the_page'
【讨论】:
奇怪的是不只是一个 LOGOUT_REDIRECT_URL 属性。 即将推出...docs.djangoproject.com/en/dev/ref/settings/… 我们现在有 2017 年,LOGOUT_REDIRECT_URL 确实有效 :) 好答案。把它贴在我的base.html
中并忘记它。 :D(我在 Debian Jessie 上使用老式 Django :S 所以新设置不可用。)【参考方案11】:
在您的注销视图中,在您永久注销用户后,返回 HttpResponseRedirect(url)。请see here for more details。
【讨论】:
【参考方案12】:从docs,您可以编写自己的注销视图(可以只是简单的包装器)覆盖“下一页”页面。
【讨论】:
以上是关于如何配置在Django中注销后重定向到哪里?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 2 中的 POST 方法后重定向到成功