我编写集成测试,它会遍历整个 HTTP 堆栈:
- 请求库连接到http服务器
- http 服务器将请求路由到 django 应用程序
- Django 应用程序处理请求
如果 django 应用程序中有未捕获的异常,我会得到 HTML 调试页面,因为 settings.DEBUG 为 True。
在大多数情况下,我喜欢这个页面,但这里想要一个简单的 ascii 回溯,我可以在我们的连续应用程序工具 (Jenkins) 中显示它。
如果我使用 url 客户端库测试我的应用程序,如何获取 ascii 回溯?
最佳答案
使用 DEBUG=True
渲染此页面是在 BaseHandler
中完成的。它调用 django.views.debug.technical_500_response View 来获取所有未捕获的异常。但是当DEBUG=False
时,另一个 View 被称为django.views.defaults.server_error
。所以你有两个选择
- 编写自定义中间件来捕获所有未捕获的异常并将其呈现为纯文本 https://docs.djangoproject.com/en/1.10/topics/http/middleware/#process-exception
- 为此处设置的 jenkinks 创建单独的设置文件
DEBUG=False
并在urls.py
中为if jenkins_env
设置handler500=定制_技术_500_响应
这将按照您需要的方式呈现您的异常 https://docs.djangoproject.com/en/1.10/ref/views/#http-internal-server-error-view和 https://docs.djangoproject.com/en/1.10/ref/urls/#handler500
关于python - Django:来自调试页面的 ascii 回溯 (HTML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40300498/