Django中不存在的模板变量

时间:2018-09-28 12:53:22

标签: python django django-templates

测试或确保所有模板变量实际上都存在的最佳实践是什么?

假设我们有以下模板

<html>
  <div>{{ existing_object.non_existing_attribute }}</div>
</html>

我们有一个现有的对象。因此,我们不能像下面的答案那样真正地测试响应上下文:Django Unitest Checking Value Of Template Variable

documentation中所述的string_if_invalid。但这仅应用于调试目的。

任何有关如何最好地避免这种情况的见识都会有所帮助!

编辑:我们假设不存在的属性是一个错误。也就是说,我拼错了变量,因此,它显示为空字符串。

2 个答案:

答案 0 :(得分:0)

您可以使用内置模板标签default_if_none

{{ object.attribute|default_if_none:"Nothing" }}

答案 1 :(得分:0)

我认为执行此操作的正确方法是测试特定的设置并为设置string_if_invalid设置一个值。因此,将该值设置为INVALID之类的值。当返回响应时,请确保模板不包含INVALID

由于这些设置仅在您的测试环境中可用,因此您永远不会冒将INVALID一词投入生产的风险。