【问题标题】:Django delete all cookies for all usersDjango 删除所有用户的所有 cookie
【发布时间】:2015-05-27 01:59:51
【问题描述】:

当用户在模式对话框中点击“不再提醒我”时,我有 django 视图来设置 cookie 'no_show_dialog' 中的值。 p>

现在我完全更改了该对话框,并希望为所有用户重置该 cookie,因此他们必须至少再次查看一次。

我知道有一种方法可以删除特定用户视图中的 cookie:

response.delete_cookie('no_show_dialog')

但是如何遍历所有用户并删除该 cookie 一次?

【问题讨论】:

    标签: django cookies django-1.4


    【解决方案1】:

    你不能那样做。 Cookies存储在客户端;您唯一可以访问它们的时间是特定浏览器发出请求并收到响应时。

    从现在开始,最好的办法就是为 cookie 使用不同的名称。这将确保没有用户最初设置它。或者,您可以考虑将会话用于将来的设置。

    【讨论】:

      【解决方案2】:

      正如丹尼尔所说,您不能删除所有 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,这样它将重置所有功能。
      猜你喜欢
      • 2011-01-18
      • 2020-12-27
      • 2014-10-30
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 2011-05-27
      相关资源
      最近更新 更多