如何在Django中注销后重定向的位置?

DJ.*_*aSs 80 authentication django

只是想知道我可以在注销后将URL设置为重定向到哪里.我知道你可以设置登录URL.我想重定向到我的主页.

Yuj*_*ita 146

现代Django(2017+?)有一个叫做的设置LOGOUT_REDIRECT_URL.

较旧的Djangos /原始答案

您不需要覆盖或包装任何东西.

根据文档,您可以将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/'})
Run Code Online (Sandbox Code Playgroud)

  • 如果您对所有auth URL进行了通用导入,则此方法无效.更容易使用@YeRuizhi的答案如下 (4认同)

YeR*_*zhi 52

更简单的方法:

将"next"参数添加到您的注销请求网址中.例如:

<a href="{% url 'auth_logout' %}?next=/path_to_the_page"> Logout</a>
Run Code Online (Sandbox Code Playgroud)

然后退出视图将为您完成.

对于登录后重定向,您只需在settings.py中设置它:

LOGIN_REDIRECT_URL = '/path_to_the_page'
LOGIN_URL = '/path_to_the_page'
Run Code Online (Sandbox Code Playgroud)

  • 奇怪的是,不仅有LOGOUT_REDIRECT_URL属性. (35认同)
  • 我们现在有2017年,LOGOUT_REDIRECT_URL实际上正在工作:) (14认同)
  • 即将推出... https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-LOGOUT_REDIRECT_URL (5认同)

ede*_*ans 32

从Django 1.10开始,你可以定义一个LOGOUT_REDIRECT_URL(参见文档)

  • 这应该是现在接受的答案 (2认同)

Cir*_*四事件 8

重定向到当前页面

<a href="{% url 'logout' %}?next={{ request.path | urlencode }}">{% trans "Logout" %}</a>
Run Code Online (Sandbox Code Playgroud)

在Django 1.9中测试过.

另请参阅:是否可以通过Django的{%url%}模板标记传递查询参数?


SAC*_*VAN 8

您可以在settings.py文件中使用LOGOUT_REDIRECT_URL来将用户重定向到任何地方

LOGOUT_REDIRECT_URL = 'url name to redirect'
Run Code Online (Sandbox Code Playgroud)


dan*_*ast 6

您甚至可以为下一个参数使用命名网址:

<a href="{% url 'auth_logout' %}?next={% url 'homepage' %}"> Logout</a>
Run Code Online (Sandbox Code Playgroud)