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

使用Flask与Jinja时如何将服务端变量传递给include引入的footer模板

解决方案

方法1:直接使用(无需额外配置)

Jinja 模板的{% include %}语法默认会让引入的子模板继承父模板的全部上下文变量,你不需要做任何额外传递操作,直接在footer.html中使用{{ year }}即可正常读取服务端传给index.html的year值。

方法2:显式传参(适合自定义传参场景)

如果你需要明确指定传递给子模板的变量,或者要传递index.html中没有的额外变量,可以使用带with参数的引入语法:

{% include "footer.html" with year=year %}

如果需要传递多个变量,直接用空格分隔即可:

{% include "footer.html" with year=year site_title="个人站点" %}

如果希望子模板只能读取你主动传递的变量,禁止继承父模板的其他上下文,可以添加only关键字:

{% include "footer.html" with year=year only %}

方法3:全局注入(适合全站通用变量优化)

如果year这类版权年份是全站页面都需要的通用变量,不需要每个路由都手动在render_template中传参,可以使用Flask上下文处理器全局注入变量:

from datetime import datetime

# 全局上下文处理器,所有模板都能读取返回的变量
@app.context_processor
def inject_common_params():
    return {
        "year": datetime.now().year
    }

配置完成后,你所有路由的render_template都无需再传递year参数,全站任意模板都可以直接调用{{ year }}获取值,大幅减少重复代码。


内容的提问来源于stack exchange,提问作者Visakh Unnikrishnan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:15:07