【发布时间】:2010-11-19 12:12:09
【问题描述】:
我在注销后将用户重定向到主页。在这两者之间,我想删除所有/或特定的客户端 cookie(我之前设置过)。
def logoutuser(request):
logout(request)
return redirect('app.home.views.home')
调用response.delete_cookie('user_location'),没有响应对象。我该怎么做?
【问题讨论】:
我在注销后将用户重定向到主页。在这两者之间,我想删除所有/或特定的客户端 cookie(我之前设置过)。
def logoutuser(request):
logout(request)
return redirect('app.home.views.home')
调用response.delete_cookie('user_location'),没有响应对象。我该怎么做?
【问题讨论】:
就像jobcry说的,logout()清理会话数据,但看起来你也设置了自己的cookie。
您可以包装 auth logout 视图,这将返回 HttpResponse:
def logout_user(request):
response = logout(request, next_page=reverse('app.home.views.home'))
response.delete_cookie('user_location')
return response
或者,如果您只是使用注销方法而不是视图,则可以使用您拥有的 redirect() 方法的返回值(我假设它也返回 HttpResponse)。
def logout_user(request):
logout(request)
response = redirect('app.home.views.home')
response.delete_cookie('user_location')
return response
【讨论】:
path 和 domain 应该与您在 set_cookie() 中使用的值相同——否则 cookie不能删除。” docs.djangoproject.com/en/1.3/ref/request-response/…
from django.contrib.auth import logout 中似乎没有 next_page 作为参数
根据http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.logout
在 Django 1.0 中进行了更改:现在调用 logout() 会清除会话数据。
【讨论】:
希望这会有所帮助: 调用“/clear-cookies”时删除cookie
location.href = '/clear-cookies';
在views.py中定义一个方法:
def clear_cookies(request):
response = HttpResponseRedirect('/')
response.delete_cookie('_gat', domain='example.com')
response.delete_cookie('_ga', domain='example.com')
response.delete_cookie('_gid', domain='example.com')
return response
将路径和方法添加到您的 urls.py:
url(r'^clear-cookies', clear_cookies),
【讨论】: