为什么这会进入无限循环,并且"TESTING"永远不会被打印出来?似乎该logout函数导致页面重定向到自身,但文档建议您可以在调用该函数后放置自己的重定向.
def logout(request):
logout(request)
print 'TESTING'
messages.success(request, 'Logged out.')
return HttpResponseRedirect(request.GET['next'] or reverse('home'))
Run Code Online (Sandbox Code Playgroud)
如果此注销功能具有一些隐藏的重定向功能,是否有另一种方法可以将用户注销?
刚刚看了一下源代码,没有什么可疑的:
def logout(request):
"""
Removes the authenticated user's ID from the request and flushes their
session data.
"""
request.session.flush()
if hasattr(request, 'user'):
from django.contrib.auth.models import AnonymousUser
request.user = AnonymousUser()
Run Code Online (Sandbox Code Playgroud)
我真的无法想象是什么导致了这一点.
Daw*_*wid 15
你写:
def logout(request):
logout(request)
Run Code Online (Sandbox Code Playgroud)
这意味着你调用视图本身 - 而不是logout函数.
你可以写下来解决这个问题:
from django.contrib import auth
# ...
def logout(request):
auth.logout(request)
# ...
Run Code Online (Sandbox Code Playgroud)
此外,您不必编写自己的注销视图 - 默认情况下它已作为django.contrib.auth.views.logout提供.
| 归档时间: |
|
| 查看次数: |
1444 次 |
| 最近记录: |