2013-03-18 119 views
19

我提供了简单的登录功能。对于注销,我试图使用内置的一个。这是我的urls.py:django注销将我重定向到管理页面

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

这是我的模板文件:

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

我也启用了默认的Django管理站点。当我点击logout时,它会显示管理注销视图。我怎样才能通过注销下一页属性告诉Django哪个视图呈现?

+1

可能重复的[注销后的Django重定向](http://stackoverflow.com/questions/5315100/django-redirect-after-log-out) – 2016-05-12 20:09:04

回答

3

这一切都在手册中得到了很好的解释,有没有什么具体的你不明白?

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/' %} 
+0

我想我可以使用内置的Django注销视图和参数化它不知何故 - 这不会强迫我定义我自己的自定义视图。 – ducin 2013-03-18 00:07:29

+0

@tkoomzaaskz:这也是一个选项,它在这里解释:https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views。注销 – Wolph 2013-03-18 00:12:38

+1

然后,我得到'反向注销'参数'()'和关键字参数'{u'next':''/ some/url /'}'找不到'。我不知道什么是错...我从contrib的'login'得到同样的错误... – ducin 2013-03-20 23:10:44

12

我做的是加入到这个我urls.py:

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

然后用它:

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

对于next说法,有你指向正确的URL。

35

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

+0

指定也应用程序的名称是如何这个答案回答“我怎样才能通过注销**下一页属性**告诉Django哪个视图呈现?” – Louis 2016-05-21 17:46:55

+3

我不知道注销模板必须命名为'logged_out.html'。谢谢你,你已经结束了几乎一天的头痛:) – 2016-10-09 13:03:38

+0

哇。在阅读有关身份验证时,我没有在文档中找到它。整洁 – karx 2017-12-19 08:43:35

4

我正经历着由例如下面的Django相同isssue ......发现了这个网址为我工作

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

这个答案如何回答“我怎么能通过注销下一页属性告诉Django哪个视图呈现?” – Louis 2016-05-21 17:39:03

+0

它对我有用 – Tushortz 2016-11-26 12:23:17

+0

谢谢!这是为我工作的答案。指定模板名称可以修复它,以便它不再切换到管理员注销。 – excyberlabber 2017-06-08 16:48:02

1

最快的答案是:

一)之前,请确保您的应用程序来django.contrib.admin在settings.py 和 下已安装的应用程序b)确保您的模板名为logged_out.html