我有一个网站,显示不同的内容根据访问者选择的位置。例如:用户输入55812作为邮政编码。我知道最晚/很久以前的城市和地区。也就是说,向他们提供与该领域相关的内容。我的问题是,我如何将其存储在cookie中,这样当他们返回时,他们不需要总是输入他们的邮政编码?
我的看法如下:
我似乎找不到任何关于设置cookie的可靠信息。任何帮助都是非常感谢的。
发布于 2009-10-26 17:40:35
更新:查看下面的Peter's answer以获取内置解决方案:
这是一个设置持久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's answer以获取内置解决方案:
发布于 2011-04-07 11:23:20
使用Django's session framework应该涵盖大多数场景,但Django现在还提供了请求和响应对象的direct cookie manipulation methods (因此您不需要助手函数)。
设置cookie:
def view(request):
response = HttpResponse('blah')
response.set_cookie('cookie_name', 'cookie_value')
检索cookie:
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
发布于 2009-10-26 10:38:48
您可以手动设置cookie,但根据您的用例(如果您将来可能想要添加更多类型的持久/会话数据),使用Django's sessions feature可能更有意义。这将允许您在内部绑定到用户的会话cookie的get and set变量。很酷的一件事是,如果你想存储大量与用户会话相关的数据,那么将它们全部存储在cookie中将会增加HTTP请求和响应的权重。对于会话,会话cookie是来回发送的全部内容(尽管Django要记住存储会话数据的开销)。
https://stackoverflow.com/questions/1622793
复制相似问题