djangocookies

How to update a cookie in Django


In other languages, it's very easy to update for example the expire date in a cookie, but I can't for my life figure out how to do it in Django!

The reason for updating the expire date instead of setting a new cookie is so I don't have to do a database call on every page.

EDIT: Thanks for all the answers, but it seems to be some confusion about what I'm trying to accomplish, so I'll try to be more precise: SETTING or GETTING a cookie is not the question. What I would like to know is how to UPDATE an already set cookie. Sorry for the misunderstanding!


Solution

  • At some point, for a new user, you should set the cookie. Cookie expire time is usually a per user case. In Django, you can set the cookie age with the following code:

    response = redirect('somewhere') # replace redirect with HttpResponse or render
    response.set_cookie('cookie_name', 'cookie_value', max_age=1000)
    

    The above cookie will expire after 1000s in a user's browser.

    There's also an expires attribute where you can specify an expire date.

    Reference: https://docs.djangoproject.com/en/2.0/ref/request-response/#django.http.HttpResponse.set_cookie

    EDIT

    From the django source code, try the following:

    response = redirect('somewhere') # replace redirect with HttpResponse or render
    response.cookies['cookie_name']['expires'] = datetime.today() + timedelta(days=1)
    

    Expire the above 1 day from today.