Python Django logout()返回none

Python Django logout()返回none,python,django,logout,Python,Django,Logout,大家早上好 我使用django logout()结束我的会话,就像django docs说的那样: 视图.py class Logout(View): def logout_view(request): logout(request) return HttpResponseRedirect(reverse('cost_control_app:login')) 我从这个url调用它: url.py url(r'^logout/$', views.Logo

大家早上好

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

视图.py

class Logout(View):
    def logout_view(request):
        logout(request) 
        return HttpResponseRedirect(reverse('cost_control_app:login'))
我从这个url调用它:

url.py

url(r'^logout/$', views.Logout.as_view(), name = "logout"),
但它不工作,当我进行跟踪时,我发现函数:

 def logout_view(request):
它返回“none”并且它正在输入以执行内部代码


请帮帮我

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

def get(self, request):
def post(self, request):
如果您希望它成为POST请求,您可以将其更改为:

def get(self, request):
def post(self, request):

这是Django中基于类的视图的标准工作方式。此外,您可能希望查看,因为这可能会让您更好地了解他们的工作方式以及他们可以为您提供什么。(提示:有一个内置的)

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

def get(self, request):
def post(self, request):
如果您希望它成为POST请求,您可以将其更改为:

def get(self, request):
def post(self, request):
这是Django中基于类的视图的标准工作方式。此外,您可能希望查看,因为这可能会让您更好地了解他们的工作方式以及他们可以为您提供什么。(提示:有一个内置视图)

Django有一个内置视图。我会用它,而不是自己写

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',
)
如果您想编写自己的
注销
视图,那么我将坚持使用基于函数的视图。这里不需要使用基于类的视图。上的文档有一个示例

def logout_view(request):
    logout(request)
    # Redirect to a success page.
然后将url模式更改为

url(r'^logout/$', logout_view, name="logout"),
如果您真的想编写一个基于类的视图,那么您需要修复
注销
视图。有关这方面的更多信息,请参见Joey的答案。

Django有一个内置视图。我会用它,而不是自己写

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',
)
如果您想编写自己的
注销
视图,那么我将坚持使用基于函数的视图。这里不需要使用基于类的视图。上的文档有一个示例

def logout_view(request):
    logout(request)
    # Redirect to a success page.
然后将url模式更改为

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

如果您真的想编写一个基于类的视图,那么您需要修复
注销
视图。有关此问题的更多信息,请参见Joey的答案。

解决了这个问题,我刚刚删除了类注销(视图),并从url调用def,而没有“as_视图”,并且它可以工作。谢谢大家

解决了这个问题,我只是删除了类logout(View)并从url调用def,而没有“as_View”,它就可以工作了。谢谢大家

没错,刚刚发现你在尝试,非常感谢!!没错,刚刚发现你在尝试,非常感谢!!哪个“django文档”?还说了些别的什么“django docs”?说了些别的。