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!
A Django cookie attribute can perform one of two actions. It can drop a cookie in a user’s computer (set) and then access those cookies (get). Let’s look at both the methods here. This cookie attribute creates a cookie, which is then sent by the server to the user browser to store information. The syntax for set_cookie () is:
When the cookie expires, it is removed from the browser. The Django HttpResponse object has a set_cookie () method. name: Name of the cookie. value: Value you want to store in the cookie. You can set int or string but it will return string.
When a user logs in, Django adds a row to the django_session database table. Django updates this row each time the session data changes. If the user logs out manually, Django deletes the row. But if the user does not log out, the row never gets deleted. A similar process happens with the file backend.
If SESSION_EXPIRE_AT_BROWSER_CLOSE is set to True, Django will use browser-length cookies – cookies that expire as soon as the user closes their browser. Use this if you want people to have to log in every time they open a browser.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With