Django 响应中间件:获取创建响应的视图名称



>我有一个简单的中间件,可以检查响应中的HTML是否有效。

如果 HTML 无效,则 html 无效"异常会在开发系统中引发。

到目前为止,该 xception 包含 URL 和验证错误。

然后开发人员在众所周知的黄色和灰色 django 调试页面中看到 URL。

也许我是盲人,但是如果我查看 django 调试页面,我看不到我的哪些方法/视图创建了带有损坏 html 的内容。

有没有办法向"html无效"异常添加更多信息,以帮助开发人员?开发人员应该更容易找到相关的方法/视图。

process_view钩子允许您访问视图函数、args 和 kwargs。您可以将这些存储在请求中,然后在引发"html 无效"异常时使用它们。

您可以使用 Alasdair 提到的process_view,为调试消息初始化字典,并显示它们所需的信息。

您还可以按如下所示(self.debug_helper['process_request'] = {}')字典分组,以指定请求/响应的详细信息。

__module__将为您提供在其中定义视图函数/类的模块。

class CheckForBrokenHtmlMiddleware(MiddlewareMixin):
    def __init__(self, get_response):
        self.get_response = get_response
        self.debug_helper = {}
    def process_request(self, request):
        self.debug_helper = {}
        self.debug_helper['process_request'] = {}
        self.debug_helper['process_request']['path'] = request.path
    def process_view(self, request, view_func, view_args, view_kwargs):
        self.debug_helper['name'] = view_func.__name__
        self.debug_helper['module'] = view_func.__module__
        self.debug_helper['message'] = '"{0}" view caused an error in module "{1}"'.format(
            view_func.__name__, view_func.__module__
        )
    def process_response(self, request, response):            
        print(self.debug_helper)
        return response

相关内容

  • 没有找到相关文章

最新更新