Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Django中间件中设置cookie?_Django_Cookies_Middleware - Fatal编程技术网

如何在Django中间件中设置cookie?

如何在Django中间件中设置cookie?,django,cookies,middleware,Django,Cookies,Middleware,我尝试了以下几种版本: 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(

我尝试了以下几种版本:

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。我没有将任何浏览器设置为拒绝cookies

我目前正在使用DevelopmentServer,我确实将公共和会话中间件设置为设置中的第一个中间件。我没有设置任何cookie设置。

来自Django:

expires应该是格式为Wdy,DD Mon YY的字符串 HH:MM:SS GMT“或UTC中的datetime.datetime对象。如果到期 是datetime对象,将计算最大年龄

所以,试试看:

>> 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"))


我更喜欢第一种方法。

经过几个小时的搜索,我发现您必须设置
max\u age
参数:

response.set_cookie('ref', request.GET.get('ref', ''),
                    expires=expires.utctimetuple(), max_age=max_age)

我确实传递了一个datetime对象dude.Trie来为max_age参数提供socond数字,而不是expires参数。如果我提供max_age,这是一样的。
response.set_cookie('ref', request.GET.get('ref', ''),
                    expires=expires.utctimetuple(), max_age=max_age)