首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django logout()不返回

Django logout()不返回
EN

Stack Overflow用户
提问于 2015-12-16 16:07:22
回答 3查看 595关注 0票数 0

大家早上好

我使用django logout()来结束我的会话,就像django博士说的那样:

views.py

代码语言:javascript
复制
class Logout(View):
    def logout_view(request):
        logout(request) 
        return HttpResponseRedirect(reverse('cost_control_app:login'))

我从这个网址上打电话说:

urls.py

代码语言:javascript
复制
url(r'^logout/$', views.Logout.as_view(), name = "logout"),

但是它不起作用,当我执行跟踪时,我发现这个函数:

代码语言:javascript
复制
 def logout_view(request):

它正在返回"none“,也不想在里面执行代码。

请救救我!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-16 16:28:07

Django有一个内置的logout视图。我宁愿用这个来代替你自己写。

代码语言:javascript
复制
from django.contrib.auth import views as auth_views
from django.core.urlresolvers import reverse_lazy

url(r'^logout/$', 
    auth_views.logout, 
    {'next_page': reverse_lazy('cost_control_app:login')},
    name='logout',
)

如果您想编写自己的logout视图,那么我将坚持使用基于函数的视图。这里不需要使用基于类的视图。注销用户上的文档有一个例子。

代码语言:javascript
复制
def logout_view(request):
    logout(request)
    # Redirect to a success page.

然后将url模式更改为

代码语言:javascript
复制
url(r'^logout/$', logout_view, name="logout"),

如果您真的想编写一个基于类的视图,那么您需要修复您的Logout视图。有关这方面的更多信息,请参见乔伊的回答。

票数 1
EN

Stack Overflow用户

发布于 2015-12-16 16:12:06

我很好奇,为什么您有一个名为logout_view()的方法?默认情况下,不会调用该方法。您需要更改名称以匹配将用于调用页面的HTTP谓词。例如,如果它将是一个GET请求,您可以将其更改为:

代码语言:javascript
复制
def get(self, request):

如果您希望它是一个POST请求,您可以将它更改为:

代码语言:javascript
复制
def post(self, request):

这是Django中基于类的视图的标准工作方式。此外,您可能需要查看基于类视图的文档,因为这可能使您更好地了解他们的工作以及他们可以提供给您的东西。(提示:有一个内置的RedirectView)

票数 2
EN

Stack Overflow用户

发布于 2015-12-16 16:37:55

解决了这个问题后,我删除了类注销(View),并从url中调用def,而没有使用"as_view“,它就能工作了。感谢大家!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34316747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档