Django 注销() returns none
Django logout() returns none
大家早上好
我正在使用 django logout() 来结束我的会话,就像 django 文档所说的那样:
views.py
class Logout(View):
def logout_view(request):
logout(request)
return HttpResponseRedirect(reverse('cost_control_app:login'))
我从这个 url 调用它:
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):
这是基于 class 的视图在 Django 中工作的标准方式。另外,您可能想看看 documentation for class-based views, as this may give you a better idea of their workings and what they can provide to you. (Hint: There is a built-in 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
视图,那么我会坚持使用基于函数的视图。此处无需使用基于 class 的视图。 logging a user out 上的文档有一个示例。
def logout_view(request):
logout(request)
# Redirect to a success page.
然后将 url 模式更改为
url(r'^logout/$', logout_view, name="logout"),
如果您真的想编写一个基于 class 的视图,那么您需要修复您的 Logout
视图。有关详细信息,请参阅 Joey 的回答。
解决了,我只是删除了 class logout(View) 并从 url 调用 def 而没有 "as_view" 并且它有效。感谢大家!
大家早上好
我正在使用 django logout() 来结束我的会话,就像 django 文档所说的那样:
views.py
class Logout(View):
def logout_view(request):
logout(request)
return HttpResponseRedirect(reverse('cost_control_app:login'))
我从这个 url 调用它:
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):
这是基于 class 的视图在 Django 中工作的标准方式。另外,您可能想看看 documentation for class-based views, as this may give you a better idea of their workings and what they can provide to you. (Hint: There is a built-in 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
视图,那么我会坚持使用基于函数的视图。此处无需使用基于 class 的视图。 logging a user out 上的文档有一个示例。
def logout_view(request):
logout(request)
# Redirect to a success page.
然后将 url 模式更改为
url(r'^logout/$', logout_view, name="logout"),
如果您真的想编写一个基于 class 的视图,那么您需要修复您的 Logout
视图。有关详细信息,请参阅 Joey 的回答。
解决了,我只是删除了 class logout(View) 并从 url 调用 def 而没有 "as_view" 并且它有效。感谢大家!