How to configure where to redirect after a log out in Django?
Just wondering where I can set the url to redirect to after logout. I开发者_高级运维 know you can set the login url. I want to redirect to my home page.
Modern Django (2017+?) has a setting called LOGOUT_REDIRECT_URL
.
Older Djangos / Original Answer
You don't need to overwrite or wrap anything.
According to the docs, you can just supply the next_page
argument to the logout view.
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/'})
One easier way:
Add 'next' parameter to your log-out request url. For example:
<a href="{% url 'auth_logout' %}?next=/path_to_the_page"> Logout</a>
Then the logout view will do the trick for you.
For after-login-redirect, you can just simply set it in settings.py:
LOGIN_REDIRECT_URL = '/path_to_the_page'
LOGIN_URL = '/path_to_the_page'
Since Django 1.10, you can define a LOGOUT_REDIRECT_URL
(see the docs)
You can redirect user anywhere by using LOGOUT_REDIRECT_URL in your setting.py file
LOGOUT_REDIRECT_URL = 'url name to redirect'
Redirect to current page
<a href="{% url 'logout' %}?next={{ request.path | urlencode }}">{% trans "Logout" %}</a>
Tested in Django 1.9.
See also: Is it possible to pass query parameters via Django's {% url %} template tag?
You can even use named urls for your next parameter:
<a href="{% url 'auth_logout' %}?next={% url 'homepage' %}"> Logout</a>
In your logout view, after you logout the user for good, return HttpResponseRedirect(url). Please see here for more details.
From docs you can write your own logout view (which can be just simple wrapper) overriding the 'next' page.
If you want to set the redirection URL on client level, you can do it in the urls.py
:
(r'^management/logout/$', 'django.contrib.auth.views.logout'),
And then in the template:
<a href="{% url 'django.contrib.auth.views.logout' %}?next=/">
Log out
</a>
Where the next
, you point to the right URL.
If you have defined your own urls (and not imported generic auth urls) and are using the standard django auth views, them you can simply add (template_name='example.html') in the path.
path('logout/',auth_views.LogoutView.as_view(template_name='homepage.html'),name="logout")
add this in you project setting.py file
LOGOUT_REDIRECT_URL = '/'
you can write your URL between '' I use my index page for logout default redirect
Add the below line in your project setting.py file:
ACCOUNT_LOGOUT_REDIRECT_URL = '/'
精彩评论