繁体   English   中英

Django logout()不返回任何值

[英]Django logout() returns none

大家早上好

我使用django logout()结束会话,就像django docs所说的那样:

views.py

class Logout(View):
    def logout_view(request):
        logout(request) 
        return HttpResponseRedirect(reverse('cost_control_app:login'))

我从这个网址调用它:

urls.py

url(r'^logout/$', views.Logout.as_view(), name = "logout"),

Buttttttt它不起作用,当我进行跟踪时,我发现该函数:

 def logout_view(request):

它返回“ none”,并且进入执行代码是不可行的...

请帮我 !

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

def get(self, request):

如果您希望将其作为POST请求,则可以将其更改为:

def post(self, request):

这是基于类的视图在Django中工作的标准方式。 另外,您可能希望查看基于类的视图文档 ,因为这可以使您更好地了解它们的工作原理以及它们可以为您提供什么。 (提示:有一个内置的RedirectView

Django具有内置的logout视图。 我会用它而不是自己写。

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视图,那么我会坚持使用基于函数的视图。 此处无需使用基于类的视图。 有关注销用户的文档有一个示例。

def logout_view(request):
    logout(request)
    # Redirect to a success page.

然后将网址格式更改为

url(r'^logout/$', logout_view, name="logout"),

如果您确实想编写基于类的视图,则需要修复Logout视图。 有关更多信息,请参见Joey的答案。

解决了这个问题,我只是删除了类logout(View)并从URL中调用了def,而没有使用“ as_view”,它可以正常工作。 谢谢大家 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM