我有一个中间件来为每个传入的请求进行一些计算/检查。有些观点需要这个计算结果。
由于我不想两次调用相同的代码,我想将结果放在中间件中的 HttpRequest 中,以便视图能够读取它。
你能帮我正确的提示吗,我怎样才能向 HttpRequest 添加一个对象?
谢谢
我有一个中间件来为每个传入的请求进行一些计算/检查。有些观点需要这个计算结果。
由于我不想两次调用相同的代码,我想将结果放在中间件中的 HttpRequest 中,以便视图能够读取它。
你能帮我正确的提示吗,我怎样才能向 HttpRequest 添加一个对象?
谢谢
HttpRequest
是一个普通的类,你可以直接将对象分配给它的实例,request
在中间件中。例如:
class MyMiddleware(object):
def process_request(self, request):
request.foo = 'bar'
您可以使用所谓的“ monkey-patch ”方法扩展 HttpResponse。例如,您可以HttpResponse
通过从根目录中调用以下函数,甚至可以轻松地添加__init__.py
或替换方法和属性:wsgi.py
settings.py
def apply_http_request_patch():
def get_property_value(request):
# return lazily evaluated value
from django.http import HttpRequest
HttpRequest.some_property = property(get_property_value)