Django 在子模板中扩展公共变量或块
Posted
技术标签:
【中文标题】Django 在子模板中扩展公共变量或块【英文标题】:Django extend common variable or block in child templates 【发布时间】:2018-06-09 02:32:17 【问题描述】:我在基本模板中有一个公共变量或块,我想在子模板中扩展它,我该如何实现?我有以下代码。
base.html
<html>
<head>
<title>
% block page_title % % endblock %
</title>
<meta property="og:title" content="% block page_title % % endblock %" />
...
</head>
<body>
<h1> % block page_title % % endblock % </h1>
...
my_page.html
% extends 'base.html' %
% block page_title %
Page title goes here
% endblock %
当我运行此代码时,我收到以下错误 名为“page_title”的“block”标签多次出现
【问题讨论】:
AFAIK,块必须是唯一的。你的区块page_title
出现了两次。
我该如何解决?
在每个view
中,设置一个上下文变量,其中包含页面标题的值。
正如@SachinKukreja 所说,在所有这些地方使用相同的上下文变量并确保您的视图正确提供它。您可以在模板中提供一个默认值,以免将其留空。
【参考方案1】:
每当您发现自己希望某个值在模板中出现两次时,就会觉得应该在渲染上下文中提供该数据。
有很多选项,但最简单的就是在渲染模板时提供一个page_title
上下文参数:
def my_view(request):
# View code here...
return render(request, 'myapp/index.html',
'page_title': 'Your Page Title',
)
然后在您的模板中将其用作任何其他模板变量: page_title
【讨论】:
以上是关于Django 在子模板中扩展公共变量或块的主要内容,如果未能解决你的问题,请参考以下文章