中间件中的 Django 请求对象?
Django Request Object in middleware?
我正在构建自定义 Prometheus 中间件 class 来进行一些监控,我想为中间件中的给定请求构建或检索 Django Rest Framework Request
对象,以便我可以在我的指标中捕获 request.version
。
但是,我下面代码中的 request
参数似乎是一个 WSGIRequest
对象。是否可以在中间件中识别 DRF HttpRequest
对象?下面的代码...
if django.VERSION >= (1, 10, 0):
from django.utils.deprecation import MiddlewareMixin
else:
MiddlewareMixin = object
class CustomPrometheusAfterMiddleware(MiddlewareMixin):
def process_response(self, request, response):
# Do some cool things
return response
如果你 check the source code,Django 的 HttpRequest
对象被包装在 views.APIView.dispatch
中 DRF 的 Request
对象中,所以我认为你将不得不经历很多困难为拿到它,为实现它。你最好的选择可能是修补 APIView
以存储你在真实请求(Django 的 HttpRequest
或子类)之后的信息 - 或者响应 FWIW - 这样你就可以将它们取回中间件。
我正在构建自定义 Prometheus 中间件 class 来进行一些监控,我想为中间件中的给定请求构建或检索 Django Rest Framework Request
对象,以便我可以在我的指标中捕获 request.version
。
但是,我下面代码中的 request
参数似乎是一个 WSGIRequest
对象。是否可以在中间件中识别 DRF HttpRequest
对象?下面的代码...
if django.VERSION >= (1, 10, 0):
from django.utils.deprecation import MiddlewareMixin
else:
MiddlewareMixin = object
class CustomPrometheusAfterMiddleware(MiddlewareMixin):
def process_response(self, request, response):
# Do some cool things
return response
如果你 check the source code,Django 的 HttpRequest
对象被包装在 views.APIView.dispatch
中 DRF 的 Request
对象中,所以我认为你将不得不经历很多困难为拿到它,为实现它。你最好的选择可能是修补 APIView
以存储你在真实请求(Django 的 HttpRequest
或子类)之后的信息 - 或者响应 FWIW - 这样你就可以将它们取回中间件。