Django Cookies,我该如何设置它们?

我有一个网站,根据访问者选择的位置显示不同的内容。 例如:用户输入55812作为zip。 我知道什么城市和地区经纬度。 那就是给他们他们关于那个领域的内容。 我的问题是,我如何将它存储在cookie中,以便当它们返回时不需要始终输入邮政编码?

我看到它如下:

  • 根据其区域设置永久性Cookie。
  • 当他们返回读取cookie时,抓住邮政编码。
  • 根据其Cookie中的邮政编码返回内容。
  • 我似乎无法找到关于设置cookie的任何可靠信息。 任何帮助是极大的赞赏。


    这是设置持久cookie的帮手:

    import datetime
    
    def set_cookie(response, key, value, days_expire = 7):
      if days_expire is None:
        max_age = 365 * 24 * 60 * 60  #one year
      else:
        max_age = days_expire * 24 * 60 * 60 
      expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age), "%a, %d-%b-%Y %H:%M:%S GMT")
      response.set_cookie(key, value, max_age=max_age, expires=expires, domain=settings.SESSION_COOKIE_DOMAIN, secure=settings.SESSION_COOKIE_SECURE or None)
    

    在发送回复之前使用以下代码。

    def view(request):
      response = HttpResponse("hello")
      set_cookie(response, 'name', 'jujule')
      return response
    

    更新 :检查@Peter答案下面的内置解决方案:https://stackoverflow.com/a/5575578/174027


    使用Django的会话框架应该覆盖大多数场景,但是Django现在也可以在请求和响应对象上提供直接的cookie操作方法(所以你不需要辅助函数)。

    设置一个cookie:

    def view(request):
      response = HttpResponse('blah')
      response.set_cookie('cookie_name', 'cookie_value')
    

    检索cookie:

    def view(request):
      if 'cookie_name' in request.COOKIES:
        value = request.COOKIES['cookie_name']
    

    您可以手动设置cookie,但根据您的使用情况(如果您以后可能想要添加更多类型的持久性/会话数据),使用Django的会话功能可能更有意义。 这将让你获取并设置内部绑定到用户会话cookie的变量。 关于这一点很酷的事情是,如果你想存储大量与用户会话相关的数据,那么将所有数据存储在cookie中会为HTTP请求和响应增加许多权重。 在会话中,会话cookie是所有来回发送的(尽管在Django的存储会话数据时需要考虑开销)。

    链接地址: http://www.djcxy.com/p/57807.html

    上一篇: Django Cookies, how can I set them?

    下一篇: ASP.NET cookie expiration time is always 1/1/0001 12:00 AM