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
我正在使用 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