django模板将行为更改为silent_variable_failure = False

时间:2009-08-20 08:24:05

标签: django django-templates

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下开发时,如何使此更改永久化?

谢谢, 尼克

3 个答案:

答案 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以改变此行为。