met*_*ner 2 python django templates django-queryset
当针对非上下文值调用时,模板值标签是否会强制 django 访问数据库?
例如:
{{ request.user.username }}是显示当前登录用户的用户名的调用。但是,类似的东西{{ request.user.someobject_set.all }}会将 FK 遍历的查询集转储到模板中。
用户的someobject设置是否默认转储到上下文中,或者我是否需要在def get_context_data我的视图中使用查询集创建上下文条目?通过扩展,可以通过关联找到任何其他非请求对象?
下面的文档显示了何时在原始 python 中评估查询集,但并未真正提及模板和视图及其关系。
https://docs.djangoproject.com/en/1.6/ref/models/querysets/#when-querysets-are-evaluated
评估模板中的事物与评估其他任何地方的事物完全相同。呈现模板时,将解析变量,如果引用的对象需要数据库查找,则该对象将执行查找。但这并不是模板做任何聪明的事情,它只是告诉request.user获取它的someobject_set属性然后调用all它,这与在 Python 代码中发生的完全相同。