Comprehensive Guide To Flask Cookies
In this comprehensive guide, you will explore the world of Flask cookies. You’ll learn about what they are, how to create, read, and delete them, and the best practices for their implementation.
What Are Cookies?
When you visit a website, small text files known as cookies are stored on your computer, containing information about your engagement with the site and details about you as a user. These cookies are commonly used to store user choices, login credentials, and items in a shopping cart, providing web applications the ability to personalize your browsing experience and retain your data.
Flask cookies work in the same way, and are an essential tool for building web applications that require user authentication and personalization.
In Flask, the Request object contains a dictionary attribute that holds all the variables and values of a transmitted cookie, as well as additional information like the cookie’s expiry time, path, and domain name.
To set a cookie in Flask, you need to call the response object and the set_cookie() function, which can be retrieved from the view function’s return value using the make_response() function.
To read a cookie, you can simply use the get() method of the request.cookies attribute.
There is a single text input element present in the following HTML page:
<html> <body> <form action = "/assigncookie" method = "POST"> <p><h3>Enter User Name</h3></p> <p><input type = 'text' name = 'name'/></p> <p><input type = 'submit' value = 'Login'/></p> </form> </body> </html>
Here’s the code of getcookie.html file:
<!doctype html> <html> <body> <h1>Username Cookie is assigned</h1> <a href = '/getcookie'>See your cookie here</a> </body> </html>
In the below example, the Flask application will display a basic form when the user navigates to the ‘/ ‘ URL. The Form is submitted to the URL ‘/assigncookie‘, where the associated view function assigns a cookie named “userName” and then renders a different page.
This page, named ‘getcookie.html‘, includes a hyperlink that directs to another view function called “getcookie()“. This function retrieves and shows the cookie value in the user’s browser.
from flask import Flask, render_template, request, make_response app = Flask(__name__) @app.route('/') def front_page(): return render_template('form.html') @app.route('/assigncookie', methods = ['POST', 'GET']) def assign_cookie(): if request.method == 'POST': user = request.form['name'] resp = make_response(render_template('getcookie.html')) resp.set_cookie('userName', user) return resp @app.route('/getcookie') def getcookie(): name = request.cookies.get('userName') return '<h1>Greetings '+name+'</h1>' if __name__ == '__main__': app.run(debug = True)
Execute the application and navigate to http://localhost:5000/
This is how the outcome of a cookie being set appears.
Below is the output of retrieving and displaying a previously stored cookie.
- The application involves setting and retrieving cookies.
- The front_page() function returns an HTML template named ‘form.html’ when the user visits the root URL (‘/’).
- The assign_cookie() function is called when the user submits a form to the ‘/assigncookie’ URL. It retrieves the user’s name from the submitted form and saves it in a cookie called ‘userName’ if the request method is POST. It then returns an HTML template called ‘getcookie.html’ with the cookie set in the response object.
- The getcookie() function is triggered when the user clicks on the hyperlink that directs to the ‘/getcookie’ URL. This function retrieves the ‘userName’ cookie value using the get() method of the request.cookies attribute and displays a greeting message with the retrieved name using an h1 HTML tag.
- If the script is run directly (not imported), the app runs in debug mode by calling the app.run() method.
Flask Cookies Benefits
Here are some benefits of using cookies in Flask:
- Cookies are commonly used for session management in web applications. By storing a session ID in a cookie, Flask can keep track of the user’s session and maintain the session state across multiple requests.
- Cookies can be used to store user authentication information, such as login credentials or access tokens. This allows Flask to authenticate users and restrict access to certain parts of the application.
Flask cookies are a powerful tool for building web applications, and Flask provides a convenient way to work with them.
Flask cookies are useful for developers who wish to customize the user experience and manage state information over multiple sessions and requests. They can hold various data such as user preferences, login details, and cart items while improving security by encrypting authentication data. Flask has inbuilt features that enable the creation, retrieval, and management of cookies, allowing you to easily incorporate this functionality into your projects. Consequently, Flask cookies have many advantages and are an excellent resource for building more comprehensive and user-centric web applications.