Skip to main content
 首页 » 编程设计

python之在不重置过期时间的情况下更新django中的cookie

2024年08月23日32davidwang456

是否可以在不重置的情况下更新 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,同时将剩余的过期时间设置为过期时间。

例如,我们设置一个 cookie 的有效期为 60 分钟。 20 分钟后,还剩 40 分钟。现在我们可以更新 cookie 并将过期时间设置为 40 分钟。因此我们可以保留原来的过期时间。

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