django logout将我重定向到管理页面

duc*_*cin 27 django logout

我提供了一个简单的登录功能.对于注销,我尝试使用内置的.这是我的urls.py:

(r'', include('django.contrib.auth.urls')),
Run Code Online (Sandbox Code Playgroud)

这是我的模板文件:

{% if user.is_authenticated %}
logged in as {{ user }}
(<a href="{% url "logout" %}">logout</a>)
{% else %}
Run Code Online (Sandbox Code Playgroud)

我还启用了默认的django管理站点.单击时logout,它会显示管理注销视图.如何通过logout next page属性告诉django要呈现哪个视图?

小智 49

如果您看到Django管理站点的注销页面而不是您自己的注销页面(your_application/templates/registration/logged_out.html),请检查项目的INSTALLED_APPS设置并确保django.contrib.admin在之后'你的申请'.两个模板都位于相同的相对路径中,Django模板加载器将使用它找到的第一个模板.

  • 我不知道注销模板必须命名为`logged_out.html`.非常感谢,你已经结束了将近一天的搔痒:) (7认同)
  • 哇.在阅读有关auth时,我没有在文档中找到这个.整齐 (2认同)

Men*_*nda 15

在Django 1.6上测试过:

我做的是将其添加到我的urls.py:

(r'^management/logout/$', 'django.contrib.auth.views.logout'),
Run Code Online (Sandbox Code Playgroud)

然后用它:

<a href="{% url "django.contrib.auth.views.logout" %}?next=/">Log out</a>
Run Code Online (Sandbox Code Playgroud)

对于next参数,您指向正确的URL.

在Django 2.1上测试过

附加urlpatternsurls.py:

from django.contrib.auth import views as auth_views

urlpatterns = [
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
Run Code Online (Sandbox Code Playgroud)

然后在模板中使用它:

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

更多信息可以在这里找到.


mar*_*rkh 11

最简单的解决方案是:

  1. 确保您的应用来之前, django.contrib.admin在安装的应用程序下settings.py

  2. 确保您的模板名为logged_out.html.


cat*_*ine 10

根据文档,您可以将log_page参数提供给注销视图. https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.logout

(r'^logout/$', 'django.contrib.auth.views.logout',
    {'next_page': '/logged_out/'})
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以LOGOUT_REDIRECT_URLsettings.py文件中添加要重定向到的网址名称,例如LOGOUT_REDIRECT_URL = 'index'


Wol*_*lph 4

说明书上都解释得很清楚了,还有什么不明白的地方吗?

https://docs.djangoproject.com/en/dev/topics/auth/default/#how-to-log-a-user-out

from django.contrib.auth import logout

def logout_view(request):
    logout(request)
    # Redirect to a success page.
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想创建自己的视图

https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout

{% url 'logout' next='/some/url/' %}
Run Code Online (Sandbox Code Playgroud)

  • 然后我得到“Reverse for 'logout' with argument '()' and keywords argument '{u'next': u'/some/url/'}' not found.`。我不知道出了什么问题...我在 contrib 中使用“login”时遇到了同样的错误... (2认同)