Django 在自定义中间件中计算变量值并传递给所有视图函数

Django computing variable vaue in custom middleware and passing to all view functions

我正在使用 Django 3.2。我想计算变量的值并使该值可用于我项目中的所有视图。

我已决定使用中间件 - 但(目前)还不清楚如何使我在 MyCustomMiddleware 中计算的值在视图中可用。

这是我的自定义中间件 class:

class MyCustomMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response
        # One-time configuration and initialization.

    def __call__(self, request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.

        response = self.get_response(request)

        # Code to be executed for each request/response after
        # the view is called.
        mysecret_value = 4269  

        return response

在对 settings.py 中的 MIDDLEWARE 部分进行必要的修改后,如何在我的视图中访问 mysecret_value

myapp/views.py

def foobar(request):
    the_value = mysecret_value # <- how do I access the RHS variable?

中间件运行在视图之前,所以你可以实际修改request对象:

class MyCustomMiddleware:
    ...
    def __call__(self, request):
        request.mysecret_value = 4269
        return self.get_response(request)

然后您可以从任何视图访问此值:

def foobar(request):
    the_value = request.mysecret_value