HTML代码
{% if request.user %}
<a href="{% url 'main:logout' %}">
?????
</a>
{% else %}
<a href="{% url 'main:registration' %}">
???????????
</a>
{% endif%}
Run Code Online (Sandbox Code Playgroud)
settings.py
LOGIN_REDIRECT_URL = 'main/index'
Run Code Online (Sandbox Code Playgroud)
views.py
def logout(request):
logout(request)
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.conf.urls import url
from . import views
from django.conf import settings
urlpatterns = [
url(r'^logout/$', views.logout, {'next_page': settings.LOGOUT_REDIRECT_URL}, name='logout')
]
Run Code Online (Sandbox Code Playgroud)
怎么了?
小智 14
Django 2.0它看起来像是切换到基于类的视图
from django.contrib.auth.views import LogoutView
url(r'^logout/$', LogoutView.as_view(), {'next_page': settings.LOGOUT_REDIRECT_URL}, name='logout'),
Run Code Online (Sandbox Code Playgroud)
您正在使用不带next_page参数的自定义注销视图.您应该将它作为参数添加到视图中并传递给django logout调用,或者只使用django.contrib.auth.logout
例如在urls.py中:
from django.conf.urls import url
from django.conf import settings
from django.contrib.auth.views import logout
urlpatterns = [
url(r'^logout/$', logout, {'next_page': settings.LOGOUT_REDIRECT_URL}, name='logout')
]
Run Code Online (Sandbox Code Playgroud)
对于 Django 2.2.x 或更高版本,如果您使用path而不是url,则只需LogoutView从django.contrib.auth.viewsin导入即可urls.py。
from django.contrib.auth.views import LogoutView
Run Code Online (Sandbox Code Playgroud)
然后添加以下路径urlpatterns,
path("logout/", LogoutView.as_view(), name="logout"),
Run Code Online (Sandbox Code Playgroud)
注意:注销后需要进行LOGOUT_REDIRECT_URL = "my_url"重定向。settings.py
| 归档时间: |
|
| 查看次数: |
16613 次 |
| 最近记录: |