我正在浏览Django项目教程,并在this部分中说:
模板系统使用点查找语法来访问变量 属性。在{{question.question_text}}的示例中,首先 Django对对象问题进行字典查找。没错, 它尝试一个属性查找 - 在这种情况下有用。如果属性 查找失败了,它会尝试列表索引查找。
这是否意味着Django question
是一个字典对象,并且在第一个实例中,查找question_text
作为键,如果找到,则返回值?除此之外,我无法想象两个后备选项正在做什么。
答案 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]
的值。