首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django Cookies,我如何设置它们?

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

Stack Overflow用户
提问于 2009-10-26 10:06:28
回答 4查看 139.8K关注 0票数 134

我有一个网站,显示不同的内容根据访问者选择的位置。例如:用户输入55812作为邮政编码。我知道最晚/很久以前的城市和地区。也就是说,向他们提供与该领域相关的内容。我的问题是,我如何将其存储在cookie中,这样当他们返回时,他们不需要总是输入他们的邮政编码?

我的看法如下:

  1. 根据他们的区域设置永久cookie。
  2. 当他们返回read cookie时,根据cookie中的邮政编码抓取cookie内容。

我似乎找不到任何关于设置cookie的可靠信息。任何帮助都是非常感谢的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-10-26 17:40:35

更新:查看下面的Peter's answer以获取内置解决方案:

这是一个设置持久cookie的帮助器:

代码语言:javascript
复制
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,
    )

在发送响应之前,请使用以下代码。

代码语言:javascript
复制
def view(request):
    response = HttpResponse("hello")
    set_cookie(response, 'name', 'jujule')
    return response

更新:查看下面的Peter's answer以获取内置解决方案:

票数 75
EN

Stack Overflow用户

发布于 2011-04-07 11:23:20

使用Django's session framework应该涵盖大多数场景,但Django现在还提供了请求和响应对象的direct cookie manipulation methods (因此您不需要助手函数)。

设置cookie:

代码语言:javascript
复制
def view(request):
  response = HttpResponse('blah')
  response.set_cookie('cookie_name', 'cookie_value')

检索cookie:

代码语言:javascript
复制
def view(request):
  value = request.COOKIES.get('cookie_name')
  if value is None:
    # Cookie is not set

  # OR

  try:
    value = request.COOKIES['cookie_name']
  except KeyError:
    # Cookie is not set
票数 278
EN

Stack Overflow用户

发布于 2009-10-26 10:38:48

您可以手动设置cookie,但根据您的用例(如果您将来可能想要添加更多类型的持久/会话数据),使用Django's sessions feature可能更有意义。这将允许您在内部绑定到用户的会话cookie的get and set变量。很酷的一件事是,如果你想存储大量与用户会话相关的数据,那么将它们全部存储在cookie中将会增加HTTP请求和响应的权重。对于会话,会话cookie是来回发送的全部内容(尽管Django要记住存储会话数据的开销)。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1622793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档