Wagtail 模板变量 "self" 是否存在于(Django)页面中而不是页面的子类?
Does Wagtail template variable "self" exist in (Django) pages that don't subclass Page?
Wagtail 新手在这里模板化了一个从基于 Django 的 models.Model
class 派生的响应,我注意到它确实有 {{ page }}
模板变量可用但 [=13] =].
只是想确认这是因为 {{ self }}
模板变量仅适用于扩展 Page
的 classes。在文档中找不到任何相关内容。
提前致谢,
约翰
简短的回答是肯定的 - self
变量特定于 Page
。更准确的答案是,对于非 Page
模型,模型的响应是 'derived' 的想法是一种误解...
普通的 Django 模型对模板或服务 HTTP 响应一无所知 - 这种行为是 Wagtail Page
模型特有的。 (更具体地说:Page
模型实现了一个方法 serve(request)
,该方法呈现一个模板,该模板具有一组可用的变量,包括 page
和 self
。)
如果您遵循通常的 Django 约定,您可能有这样的视图函数:
def show(request, object_id):
my_page = SomeModel.objects.get(id=object_id)
return render(request, 'some_template.html', {
'page': my_page,
})
此处,模板响应来自对 render
的调用,这完全取决于您在该模板上提供哪些变量。在这种情况下,变量 {{ page }}
将在模板上可用,只是因为这是我们作为最后一个参数传递给 render
的内容。这完全独立于 SomeModel
中发生的任何事情 - 该模型对模板渲染过程没有影响。
Wagtail 新手在这里模板化了一个从基于 Django 的 models.Model
class 派生的响应,我注意到它确实有 {{ page }}
模板变量可用但 [=13] =].
只是想确认这是因为 {{ self }}
模板变量仅适用于扩展 Page
的 classes。在文档中找不到任何相关内容。
提前致谢,
约翰
简短的回答是肯定的 - self
变量特定于 Page
。更准确的答案是,对于非 Page
模型,模型的响应是 'derived' 的想法是一种误解...
普通的 Django 模型对模板或服务 HTTP 响应一无所知 - 这种行为是 Wagtail Page
模型特有的。 (更具体地说:Page
模型实现了一个方法 serve(request)
,该方法呈现一个模板,该模板具有一组可用的变量,包括 page
和 self
。)
如果您遵循通常的 Django 约定,您可能有这样的视图函数:
def show(request, object_id):
my_page = SomeModel.objects.get(id=object_id)
return render(request, 'some_template.html', {
'page': my_page,
})
此处,模板响应来自对 render
的调用,这完全取决于您在该模板上提供哪些变量。在这种情况下,变量 {{ page }}
将在模板上可用,只是因为这是我们作为最后一个参数传递给 render
的内容。这完全独立于 SomeModel
中发生的任何事情 - 该模型对模板渲染过程没有影响。