>我有一个简单的中间件,可以检查响应中的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