Django 删除所有用户的所有 cookie
Django delete all cookies for all users
当用户点击“不再提醒我” 在模态对话框中。
现在我完全更改了该对话框,并希望为所有用户重置该 cookie,这样他们将不得不至少再次看到它一次。
我知道有一种方法可以删除特定用户视图中的 cookie:
response.delete_cookie('no_show_dialog')
但是如何遍历所有用户并删除该 cookie 一次?
你不能那样做。 Cookie 存储在客户端;您唯一可以访问它们的时间是特定浏览器发出请求并收到响应时。
这里最好的做法是从现在开始为 cookie 使用不同的名称。这将确保没有用户最初会设置它。或者,您可以考虑将会话用于未来的设置。
正如 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 在指定时间后过期。
当用户点击“不再提醒我” 在模态对话框中。
现在我完全更改了该对话框,并希望为所有用户重置该 cookie,这样他们将不得不至少再次看到它一次。
我知道有一种方法可以删除特定用户视图中的 cookie:
response.delete_cookie('no_show_dialog')
但是如何遍历所有用户并删除该 cookie 一次?
你不能那样做。 Cookie 存储在客户端;您唯一可以访问它们的时间是特定浏览器发出请求并收到响应时。
这里最好的做法是从现在开始为 cookie 使用不同的名称。这将确保没有用户最初会设置它。或者,您可以考虑将会话用于未来的设置。
正如 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 在指定时间后过期。