大家早上好
我使用django logout()来结束我的会话,就像django博士说的那样:
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"),但是它不起作用,当我执行跟踪时,我发现这个函数:
def logout_view(request):它正在返回"none“,也不想在里面执行代码。
请救救我!
发布于 2015-12-16 16:28:07
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模式更改为
url(r'^logout/$', logout_view, name="logout"),如果您真的想编写一个基于类的视图,那么您需要修复您的Logout视图。有关这方面的更多信息,请参见乔伊的回答。
发布于 2015-12-16 16:12:06
我很好奇,为什么您有一个名为logout_view()的方法?默认情况下,不会调用该方法。您需要更改名称以匹配将用于调用页面的HTTP谓词。例如,如果它将是一个GET请求,您可以将其更改为:
def get(self, request):如果您希望它是一个POST请求,您可以将它更改为:
def post(self, request):这是Django中基于类的视图的标准工作方式。此外,您可能需要查看基于类视图的文档,因为这可能使您更好地了解他们的工作以及他们可以提供给您的东西。(提示:有一个内置的RedirectView)
发布于 2015-12-16 16:37:55
解决了这个问题后,我删除了类注销(View),并从url中调用def,而没有使用"as_view“,它就能工作了。感谢大家!
https://stackoverflow.com/questions/34316747
复制相似问题