A cookie is a small piece of data stored in the user’s browser which is sent by the server. They are commonly used to store user preferences. This is how cookies work in general:

  • The browser sends the request to the server.
  • The server sends the response along with one or more cookies to the browser.
  • The browser saves the cookie it received from the server. From now on, the browser will send this cookie to the server, every time a request is made to the server. The browser will keep sending the cookie to the server along with each request until the cookie expires.
  • When the cookie expires, it is removed from the browser.

Creating Cookies

We can create cookies using the set_cookie() method of the request object. The syntax of the method is:

Syntax

set_cookie(name, value, max_age=None)
  • name: name of the cookie
  • value: value you want to store in the cookie
  • max_age: age of the cookie in seconds. After that, it will expire. It is an optional argument, if not given then the cookie will exist until the browser is closed.

Example

def setcookie(request):
    html = HttpResponse("<h1>How to set cookie by raturi</h1>")

    if request.COOKIES.get('visit_count'):
        message = 'Thanks for visiting again'
        value = int(request.COOKIES.get('visit_count')) + 1
    else:
        value = 1
        message = "Welcome for the first time"

    html.set_cookie('visit_count', value)
    html.set_cookie('visitor_message', message)
    return html

Reading Cookies

Cookies pass to the particular website every time the client makes a request. Therefore, the server every time receives a cookie alongside the request. Django makes it very easy for us to retrieve data from a cookie.

request object in Django has a COOKIE attribute which acts like a dictionary. We can use COOKIE to access a cookie value like this:

def read_cookie(request):
    show = request.COOKIES['visit_count']
    ...

Deleting Cookies

Django provides you with easy methods for deleting cookies. As we used set_cookie() to create cookies, we can also delete cookies using a similar function, delete_cookie()

def delete_cookie(request):
    if request.COOKIES.get('visit_count'):
       response.delete_cookie("visits")
    ...

That's all. If you want to know more about Django, then do check out this newsletter