You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中复用block内容到多个位置?

解决方法

根据你使用的模板引擎,可通过以下几种方式实现block内容的复用:

Django 模板引擎方案

在base.html中利用{{ self.block_name }}语法直接复用block内容,子模板无需额外修改:

{% block description %}Some description{% endblock %}
<meta name="description" content="{{ self.description }}">
<meta property="og:description" content="{{ self.description }}">

当子模板重写descriptionblock时,两个meta标签的content会自动使用子模板定义的内容;若子模板未重写,则沿用父模板的默认值Some description。

Jinja2 模板引擎方案(如 Flask 框架)

Jinja2支持直接调用block内容,使用{{ block('block_name') }}语法:

{% block description %}Some description{% endblock %}
<meta name="description" content="{{ block('description') }}">
<meta property="og:description" content="{{ block('description') }}">

子模板仅需重写一次descriptionblock,两个meta标签即可共享该内容。

通用模板变量方案

若你的模板引擎不支持上述语法,可通过定义模板变量实现复用:

父模板(base.html)

{% set page_description = page_description|default:"Some description" %}
<meta name="description" content="{{ page_description }}">
<meta property="og:description" content="{{ page_description }}">

子模板

{% extends "base.html" %}
{% set page_description = "当前页面的专属描述信息" %}

{% block content %}
<!-- 页面内容 -->
{% endblock %}

子模板只需设置一次page_description变量,所有需要该内容的位置都会自动同步。

内容的提问来源于stack exchange,提问作者Paul R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:32:13