【发布时间】:2021-03-16 11:34:21
【问题描述】:
我编写了一个自定义 middilware 来将所有请求保存在我的数据库中。 这是我的代码:
class TestMiddleware(MiddlewareMixin):
def process_response(self, request, response):
....
# save my request attr in database
HttpRequestLog.objects.create(**params)
...
def process_exception(self, request, exception):
....
# save my request attr in database
HttpRequestLog.objects.create(**params)
...
我有问题。 当用户调用错误的 url apis 时,Django 返回 404 状态但是这段代码没有保存到我的数据库中,我没有任何错误!!!
HttpRequestLog.objects.create(**params)
我的代码在 api 返回 200 或 204 或 201 状态时工作。
【问题讨论】:
-
404 通常由 异常 而非 HTTP 响应完成,因此您需要“捕获”错误、记录响应并重新引发它。跨度>
-
我将它写入 process_exception 但不起作用!
-
@Sifb71 从您的设置中显示
MIDDLEWARE设置。 -
@Abdul Aziz Barkat MIDDLEWARE = [... myapp.middleware.request_log_middleware.TestMiddleware ... ]
-
我的中间件工作了,但是当 404 accur..in 200 或 500 工作时,我无法将任何内容保存到数据库中!
标签: django middleware django-2.2