Django在子模板中扩展公共变量或块

时间:2017-12-28 14:26:30

标签: python django-templates jinja2

我在基本模板中有一个公共变量或块,我想在子模板中扩展,我该如何实现?我有以下代码。

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 %}

当我运行此代码时,我收到以下错误 &#39;块&#39;标记为&#39; page_title&#39;出现不止一次

1 个答案:

答案 0 :(得分:1)

每当你发现自己想要一个值在模板中出现两次时,它就像在渲染上下文中提供数据一样。

有很多选项可供选择,但最简单的方法是在渲染模板时提供page_title上下文参数:

def my_view(request):
    # View code here...
    return render(request, 'myapp/index.html', {
        'page_title': 'Your Page Title',
    })

然后在模板中将其用作任何其他模板变量:{{ page_title }}