我有django视图设置Cookie ' no_show_dialog' 中的值,当用户点击'不要再提醒我&#39 ; 在模态对话框中。
现在我完全改变了该对话框,并希望为所有用户重置该cookie,因此他们必须至少再次查看一次。
我知道有一种方法可以在特定用户的视图中删除cookie:
response.delete_cookie('no_show_dialog')
但是如何循环所有用户并删除该Cookie一次?
答案 0 :(得分:3)
你不能这样做。 Cookie存储在客户端上;只有当特定浏览器发出请求并收到响应时,您才能访问它们。
这里最好的办法是从现在开始只为cookie使用不同的名称。这将确保没有用户最初设置它。或者,您可以考虑将会话用于将来的设置。
答案 1 :(得分:0)
正如Daniel所说,由于存储在客户端,所以无法删除所有cookie。
在Django中,您可以为视图中的特定请求对象创建响应对象。这意味着您只能删除该特定请求的cookie,而不能删除Django服务器提供的所有请求。
在这里你可以做的是在set_cookie方法中使用max_age作为关键字参数设置cookie的到期时间例如:
response = HttpResponse('your response')
response.set_cookie('user_id', user_id, max_age=30)
return response
这将在每个客户端的指定时间之后使cookie到期。