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),该方法呈现一个模板,该模板具有一组可用的变量,包括 pageself。)

如果您遵循通常的 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 中发生的任何事情 - 该模型对模板渲染过程没有影响。