我已经在django-users邮件列表上询问过但没有得到任何答案..所以我想我会在这里试试。
在以前的Django版本中,只要TEMPLATE_DEBUG设置为True,模板呈现期间引发的任何异常(甚至与模板语法无关的异常)都会被包装在TemplateSyntaxError中并重新引发。这样做是为了在调试500页面中提供详细的模板源位置信息。
在Django 1.4中,不再包含异常。相反,原始异常使用源信息进行注释。这意味着无论TEMPLATE_DEBUG的值如何,捕获模板呈现中的异常现在都是一致的,并且不需要捕获和解包TemplateSyntaxError以捕获其他错误。
非常酷..我想。但是现在我怎么能看到提出的异常?
如果我包含模板或调用模板标签,则会引发模板 例外,没有任何事情发生。
我很欣赏增加的稳健性......但没有明确的文档 如何显示那些异常,调试有点痛苦。
答案 0 :(得分:1)
我不太确定我理解你的问题,但我会去回答它。
当DEBUG
和TEMPLATE_DEBUG
为True
时,渲染过程中会出现异常,您会看到(这个Django开发人员非常熟悉)黄色错误页面。
使用Django 1.3及更早版本,Django会报告TemplateSyntaxError
/ my-url /
上的TemplateSyntaxError渲染时捕获ValueError:这是异常值
请求方法:GET
请求网址:http://127.0.0.1:8000/my-url/
Django版本:1.3.1
异常类型:TemplateSyntaxError
异常值:渲染时捕获ValueError:这是异常值
从Django 1.4开始,您会看到原始异常:
/ my-url /
的ValueError这是例外值
请求方法:GET
请求网址:http://127.0.0.1:8000/my-url/
Django版本:1.4
异常类型:ValueError
异常值:这是异常值
要自行测试,请尝试在模板中包含的任何模板标记中引发异常:
raise ValueError("This is the exception value")
或者更简单的方法是使用带有无效视图名称的url标记。
{% url invalid_view_name %}