You need to enable JavaScript to run this app. Flask应用如何在Jinja模板中根据运行环境动态切换iframe的src地址
优惠活动
大模型
产品
解决方案
定价
更多

Flask应用如何在Jinja模板中根据运行环境动态切换iframe的src地址

实现方案

1. 后端配置(优先推荐该方案,逻辑统一放在后端维护)

首先在Flask启动文件中通过模板上下文注入预处理好的iframe地址,无需在模板中写判断逻辑:

import os
from flask import Flask, render_template

app = Flask(__name__)

# 全局注入dashboard地址,所有模板都可直接调用
@app.context_processor
def inject_config():
    # 判断当前环境,生产环境会提前设置FLASK_ENV=production的环境变量
    if os.getenv("FLASK_ENV") == "production":
        dashboard_url = "http://server-name.elasticbeanstalk.com/dashboard2"
    else:
        dashboard_url = "http://localhost:8000/dashboard2/"
    return {"dashboard_url": dashboard_url}

# 你的路由示例
@app.route("/dashboard")
def dashboard():
    return render_template("dashboard.html")

2. 修改Jinja模板代码

直接引用后端注入的地址变量即可:

{% extends "base.html" %}

{% block content %}
<div class="embed-responsive embed-responsive-16by9">
  <iframe loading="lazy" class="embed-responsive-item" src="{{ dashboard_url }}" width="100%" height="600"></iframe>
</div>
{% endblock %}

可选方案:直接在模板中判断环境

如果需要把逻辑放在模板里实现,先在后端把os模块注入模板上下文:

@app.context_processor
def inject_os_module():
    import os
    return {"os": os}

再修改模板代码,直接在模板内做判断:

{% extends "base.html" %}

{% block content %}
{% set dashboard_url = "http://server-name.elasticbeanstalk.com/dashboard2" if os.getenv("FLASK_ENV") == "production" else "http://localhost:8000/dashboard2/" %}
<div class="embed-responsive embed-responsive-16by9">
  <iframe loading="lazy" class="embed-responsive-item" src="{{ dashboard_url }}" width="100%" height="600"></iframe>
</div>
{% endblock %}

生产环境配置

在AWS Elastic Beanstalk控制台进入对应应用的「配置」-「软件」-「环境属性」,添加键为FLASK_ENV、值为production的环境变量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 23:12:01