如何从中间件中的 Django 请求对象获取视图中使用的模型名称?
Posted
技术标签:
【中文标题】如何从中间件中的 Django 请求对象获取视图中使用的模型名称?【英文标题】:How to get model name used in view from a Django request object in middleware? 【发布时间】:2021-04-24 20:44:10 【问题描述】:我有一个 django 应用程序,我正在为其编写中间件。在中间件中,我有process_exception
函数,其中我有一个request
对象,它是一个WSGI Request
对象。
我想得到请求已经通过的视图。我该怎么做?
如果我尝试request.view
,我会得到:
AttributeError: 'WSGIRequest' object has no attribute 'view'
我还想获得模型,在该视图中使用序列化程序,但当然我可以在获得视图后使用getattr
轻松做到这一点。
【问题讨论】:
可能有用的信息:***.com/questions/2491605/… 可能有用的信息:***.com/questions/46989848/… 可能有用的信息:***.com/questions/3081327/… 【参考方案1】:虽然请求没有指示其视图的属性,但您可以按如下方式获取:
from django.urls import resolve
class MyMiddleware:
def process_exception(self, request, exception):
# code
resolver_match = resolve(request.path_info)
view_function = resolver_match.func # matching view function
url_name = resolver_match.url_name # name of the matching url
# code
参考文档resolve、ResolverMatch、attributes of HttpRequest (path_info)
【讨论】:
以上是关于如何从中间件中的 Django 请求对象获取视图中使用的模型名称?的主要内容,如果未能解决你的问题,请参考以下文章