Django对象在模板中查找

时间:2017-06-23 13:48:25

标签: python django django-models django-templates

我正在浏览Django项目教程,并在this部分中说:

  

模板系统使用点查找语法来访问变量   属性。在{{question.question_text}}的示例中,首先   Django对对象问题进行字典查找。没错,   它尝试一个属性查找 - 在这种情况下有用。如果属性   查找失败了,它会尝试列表索引查找。

这是否意味着Django question是一个字典对象,并且在第一个实例中,查找question_text作为键,如果找到,则返回值?除此之外,我无法想象两个后备选项正在做什么。

1 个答案:

答案 0 :(得分:6)

  

这是否意味着Django question是一个字典对象,并且在第一个实例中,查找question_text作为键,如果找到,则返回值?除此之外,我无法看到两个后备选项正在做什么。

question不必是第一个选项的文字dict。它需要像字典一样。也就是说,question['question_text']适用于Python。

第一个后备是指常规的Python点表示法。例如,如果其中任何一个在Python中起作用:

question.question_text  # or
question.question_text()

然后question.question_text将在返回Python值的模板中工作。请注意,在这两种情况下都省略了括号。

最终的回退是数字索引。例如,如果question是一个列表,这适用于Python:

question[0]

然后question.0将在模板中工作,返回question[0]的值。