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

时间:2011-03-15 16:52:44

标签: django authentication

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

11 个答案:

答案 0 :(得分:144)

Modern 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/'})

答案 1 :(得分:50)

一种更简单的方法:

将“下一个”参数添加到您的注销请求网址中。例如:

<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'

答案 2 :(得分:30)

自Django 1.10起,您可以定义LOGOUT_REDIRECT_URLsee the docs

答案 3 :(得分: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?

答案 4 :(得分:5)

您可以使用setting.py文件中的LOGOUT_REDIRECT_URL将用户重定向到任意位置

LOGOUT_REDIRECT_URL = 'url name to redirect'

答案 5 :(得分:3)

在您的注销视图中,在您注销用户之后,返回HttpResponseRedirect(url)。请see here for more details

答案 6 :(得分:2)

docs,您可以编写自己的注销视图(可以只是简单的包装)覆盖“下一页”。

答案 7 :(得分:2)

如果要在客户端级别设置重定向网址,可以在urls.py中执行此操作:

(r'^management/logout/$', 'django.contrib.auth.views.logout'),

然后在模板中:

<a href="{% url 'django.contrib.auth.views.logout' %}?next=/">
    Log out
</a>

next的位置,您指向正确的网址。

答案 8 :(得分:1)

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

<a href="{% url 'auth_logout' %}?next={% url 'homepage' %}"> Logout</a>

答案 9 :(得分:1)

如果您定义了自己的网址(而不是导入的通用身份验证网址),并且使用的是标准的Django身份验证视图,则只需在路径中添加(template_name ='example.html')即可。

path('logout/',auth_views.LogoutView.as_view(template_name='homepage.html'),name="logout")

答案 10 :(得分:0)

将此添加到您的项目setting.py文件中 LOGOUT_REDIRECT_URL = '/'

您可以在''之间写URL 我将索引页面用于注销默认重定向