根据Wagtail源代码,
class Page(AbstractPage, index.Indexed, ClusterableModel, metaclass=PageBase):
def get_context(self, request, *args, **kwargs):
context = {
PAGE_TEMPLATE_VAR: self,
'self': self,
'request': request,
}
if self.context_object_name:
context[self.context_object_name] = self
return context
默认情况下,wagtailPage
模型中的任何子类都可以使用self
&request
在其HTML模板中。
但是,在官方文档中,为什么我们可以在{% load wagtailcore_tags %}
之后使用page.body
而不是self.body
?我没有在任何源代码中看到这一点
page
和self
在使用标准Django模板引擎时确实有效。然而,self
是Jinja2模板引擎中的保留词,因此文档鼓励page
保持一致性(并使开发人员在未来更容易切换到Jinja2(如果他们愿意的话))。
为了记录在案,以下是引入替代变量名称的PR:https://github.com/wagtail/wagtail/pull/1571