我尝试了几个版本:
def process_response(self, request, response):
if not request.COOKIES.get('new_user', None):
print "cookie"
max_age = 365 * 24 * 60 * 60 # 10 years
expires = datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age)
response.set_cookie('new_user', expires=expires)
return response
但它不起作用:我在每个页面请求都打印了“cookie”,并且我的FF开发工具栏cookie列表中没有出现cookie。我没有设置任何浏览器拒绝cookie。
我目前正在使用开发服务器,我确实将常用和会话中间件设置为设置中的第一个。我没有设置任何cookie设置。
答案 0 :(得分:2)
在搜索数小时后,我发现您必须设置max_age
参数:
response.set_cookie('ref', request.GET.get('ref', ''),
expires=expires.utctimetuple(), max_age=max_age)
答案 1 :(得分:0)
来自Django docs:
expires应为“Wdy,DD-Mon-YY”格式的字符串 HH:MM:SS GMT“或UTC中的 datetime.datetime对象。如果过期 是一个日期时间对象,将计算max_age。
所以,试试吧:
>> import datetime
>>max_age = 365 * 24 * 60 * 60 # 10 years
>>expires = datetime.datetime.now() + datetime.timedelta(seconds=max_age)
# Cookie to GMT format via strftime method
>>response.set_cookie('new_user', expires=expires.strftime("%a, %d-%b-%Y %H:%M:%S GMT"))
或
>> response.set_cookie('new_user', expires=expires.utctimetuple())
我更喜欢第一种方法。