http://www.djangobook.com/en/beta/chapter10/
“请注意,django.core.exceptions.ObjectDoesNotExist是所有Django数据库API DoesNotExist异常的基类,其silent_variable_failure = True。因此,如果您将Django模板与Django模型对象一起使用,任何DoesNotExist异常都将失败静默“。
虽然我正在开发我想要扭转这种行为,即silent_variable_failure = False。如何在django下开发时,如何使此更改永久化?
谢谢, 尼克
答案 0 :(得分:4)
在settings.py中我添加了 TEMPLATE_STRING_IF_INVALID =“无效字符串'%s'” 有关详细信息,请参阅http://docs.djangoproject.com/en/dev/ref/templates/api/#invalid-template-variables。
它包含此警告 “当遇到不存在的变量时,许多模板(包括管理站点中的模板)依赖于模板系统的静音。如果为TEMPLATE_STRING_IF_INVALID分配除''以外的值,则会遇到这些模板和站点的渲染问题。“
答案 1 :(得分:1)
Django模板系统将silent_variable_failure
视为任何异常的属性。
这意味着您已经定义了自己的异常,并将该属性设置为False
。
对于ORM生成的标准ObjectDoesNotExist
异常等,最简单的解决方案是修改开发盒上的Django源代码(django / core / exceptions.py)。
如果您需要在生产系统上进行更改,则需要1)定义自己的异常类,2)在模型上放置一个从模板调用的管理器(而不是直接使用ORM方法) ,然后3)在你的经理中捕获DoesNotExist并用你自己的类重新引发异常。
答案 2 :(得分:-1)
另一个设置TEMPLATE_DEBUG可以在settings.py中设置为True以改变此行为。