【问题标题】:Django object lookups in templates模板中的 Django 对象查找
【发布时间】:2017-11-27 03:07:04
【问题描述】:

我正在阅读 Django 项目教程,在 this 部分它说:

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

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

【问题讨论】:

  • 问题不是字典。在处理模板时,Django 只首先假设它是一个字典。如果看起来不是,它将继续检查它是否可能是一个对象。

标签: python django django-models django-templates


【解决方案1】:

这是否意味着 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] 的值。

【讨论】:

    猜你喜欢
    • 2016-03-26
    • 2014-03-13
    • 2015-08-05
    • 2017-11-07
    • 2012-12-28
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多