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

时间:2015-12-24 08:09:05

标签: python django cookies request response

是否可以更新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

1 个答案:

答案 0 :(得分:3)

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

例如,我们设置一个剩余60分钟到期时间的cookie。 20分钟后,剩下40分钟。现在我们可以更新coookie并设置到期时间为40分钟。因此我们可以保持原来的到期日。

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