Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Python 在django中更新cookie而不重置过期时间_Python_Django_Cookies_Request_Response - Fatal编程技术网

Python 在django中更新cookie而不重置过期时间

Python 在django中更新cookie而不重置过期时间,python,django,cookies,request,response,Python,Django,Cookies,Request,Response,是否可以在不重置cookie值的情况下更新cookie值,我需要节省过期时间?目前,我尝试这样做: class SetBannerCookie(object): def process_template_response(self, request, response): max_age = 60 banners = Banner.objects.filter(active=True, show_start_date__lte=timezone.now()

是否可以在不重置cookie值的情况下更新cookie值,我需要节省过期时间?目前,我尝试这样做:

class SetBannerCookie(object):
    def process_template_response(self, request, response):
        max_age = 60
        banners = Banner.objects.filter(active=True, show_start_date__lte=timezone.now(), show_end_date__gte=timezone.now())

        for banner in banners:
            cookie_name = 'banner_'+str(banner.id)
            if cookie_name in request.COOKIES:
                # update value only here
            else:
                response.set_cookie(cookie_name, value='yes', max_age=max_age, path='/')
        return response

您可以获取cookie的到期时间,然后使用新值更新cookie,同时将剩余到期时间设置为到期时间

例如,我们设置了一个剩余60分钟到期时间的cookie。20分钟后,它还有40分钟。现在我们可以更新coookie并将到期时间设置为40分钟。这样我们就可以保持原来的有效期


request.META['HTTP\u COOKIE']
将包含原始COOKIE字符串。我们可以使用类来解码这些值。现在进行计算并更新它

我找到了这样的答案,但request.META['HTTP_COOKIE']中没有过期数据,我还尝试了SimpleCookie(request.META['HTTP_COOKIE']),它通常解析数据,但也没有过期数据data@meteor当您这样做时,您会得到什么:
print SimpleCookie(request.META['HTTP_COOKIE'])['sessionid'].values()
?我得到:设置Cookie:banner\u 2=是设置Cookie:banner\u 2\u状态=显示设置Cookie:banner\u 3=是设置Cookie:banner\u 4=是设置Cookie:banner\u 4\u状态=显示设置Cookie:csrftoken=Upp92BdZqfMMDTTvqga0hLQtnkiFSZa3设置Cookie:sessionid=z99b3s0cx0cxkydy56ul3jxx027oj51xkk实际上我用2解决了这个问题正如您在上面看到的,cookies不是一个,而是一些js工作