Flask Context


Demystifying Application and Request Contexts. This article will teach you how to use Flask Contexts in general and dwell on its two major forms Application Context and Request Context.

What is a Flask Context?

The role of contexts in a flask is to make variables temporarily accessible. Technically, request objects have to become global for them to be used by Flask Views. This becomes possible when the context is applied to assign a global state to a request object temporarily to enable flask views to be able to use it.

There are two types of Flask context: the Application Context and the Request Context.

Related course: Create Web Apps with Python Flask

The application context handles application-level data. It is common to store values necessary for applications such as database connections, configurations, etc. The Application Context temporarily turns requests objects such as the current_app and a g variable into global form.

  • current_app regulates the requests. It functions with the app facilitating the run of Flask.
  • g-variable: g means global and it enables the app to store data like the database details etc while temporarily handling requests.

Immediately, the values are set for current_app and g variables, any Flask View programmed in the application can use them. The application context is used by Flask when a request comes in and eliminates it once the request is handled.

Request Context

This context processes request-level data. The store values are different for each request type. It contains objects such as requests and the sessions.

  1. Requests: A typical request object is made up of information about the web request in question. The context is responsible for rendering request objects global for a short period that is enough for flask views to use them. A request only informs the program about the current web request. As soon as another request comes in, the previous one is immediately eliminated.

  2. Sessions: A session stores the information that lies in between two requests, unlike the request object. We will be creating a separate article on Flask sessions to further enlighten you.

A request context is activated automatically as soon as a particular request comes in and deleted once it has been accessed. The activation of a request context will automatically create an application context especially if it doesn't exist originally.

Flask view

Using the Flask view functions, you can process all request objects activated without considering the contexts. If you consider applying the request objects outside the Flask View function as seen here:

>> from flask import Flask, request
>> request.method
>> Error

It will display an error. This is similar to the application context objects

>> from flask import Flask, current_app
>> current_app.name
>> Error

The result is such because of neither the application nor the request context. Hence they have to be created. Create the application context using the app_context() method of Flask.

Run the code:

from flask import Flask, current_app
app = Flask(__name__)
appli_context = app.app_context()
current_app.name

In the syntax, We declare a Flask objects app. We push/create a application context using app.app_context() current_app is now active and is linked to the name file i.e. the main file itself. App Context

Now, the error is gone! Similarly, to create the request context using the test_request_context() method of Flask Instance

from flask import Flask, request
app = Flask(__name__)
req = app.test_request_context()
req.request

In the syntax, declare a Flask object app. We push/create a request context using app.tes_request_context()

The error code is no longer showing and the request object is now active and linked to the website, that is, the http://localhost/ file itself.

Request
Request

Conclusion

Thats all there is to Flask Contexts. It is not much of a problem as they are traditionally created by Flask in the application.