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

问题描述 投票:25回答:9

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

(r'', include('django.contrib.auth.urls')),

这是我的模板文件:

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

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

django logout
9个回答
48
投票

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


14
投票

在Django 1.6上测试过:

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

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

然后用它:

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

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

在Django 2.1上测试过

urlpatterns附加到urls.py

from django.contrib.auth import views as auth_views

urlpatterns = [
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]

然后在模板中使用它:

<a href="{% url "logout" %}?next=/">logout</a>

更多信息可以在here找到。


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

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.

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

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

{% url 'logout' next='/some/url/' %}

4
投票

我正在通过示例跟随Django经历同样的问题...发现这个网址对我有用

url(r'^logout/$', 'django.contrib.auth.views.logout', { 'template_name': 'account/logout.html',}, name='logout' ),

3
投票

最简单的解决方案是:

  1. 确保您的应用程序位于django.contrib.admin的已安装应用程序下的settings.py之前。
  2. 确保您的模板名为logged_out.html

2
投票

您可以将LOGOUT_REDIRECT_URL放在settings.py文件中,并使用网址名称重定向到,例如LOGOUT_REDIRECT_URL = 'index'


0
投票

只需在此替换加载器,即可在“your_progect_apps / templates / registration”中找到auth模板:

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
        'loaders': [
            'django.template.loaders.filesystem.Loader',
            'django.template.loaders.app_directories.Loader',
        ],
    },
},

]

Django v2.1


0
投票

我很惊讶没有人提到这一点,你可以把它放在你的settings.py中,以便在登录和注销时重定向:

LOGIN_REDIRECT_URL = '/go-here-after-login/'
LOGOUT_REDIRECT_URL = '/go-here-after-logout/'
© www.soinside.com 2019 - 2024. All rights reserved.