【问题标题】:Django extend common variable or block in child templatesDjango 在子模板中扩展公共变量或块
【发布时间】: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 所说,在所有这些地方使用相同的上下文变量并确保您的视图正确提供它。您可以在模板中提供一个默认值,以免将其留空。

标签: python django-templates jinja2


【解决方案1】:

每当您发现自己希望某个值在模板中出现两次时,就会觉得应该在渲染上下文中提供该数据。

有很多选项,但最简单的就是在渲染模板时提供一个page_title 上下文参数:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-17
    • 2010-11-22
    • 2014-05-10
    • 2010-11-27
    • 1970-01-01
    • 2011-05-03
    相关资源
    最近更新 更多