只是想知道我可以在注销后将URL设置为重定向到哪里。我知道你可以设置登录URL。我想重定向到我的主页。
答案 0 :(得分:144)
Modern Django(2017+?)有一个名为LOGOUT_REDIRECT_URL
的设置。
您无需覆盖或包装任何内容。
根据文档,您只需在注销视图中提供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_URL
(see 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 我将索引页面用于注销默认重定向