jinja2 - 在 html 中使用 jinja2 来根据环境变量控制要加载的 javascript
问题描述
我有一个 main.html 文件,它根据模式(开发或生产)加载一个 javascript 文件
cat main.html
...
{% block javascript %}
<!-- for development -->
<script type="module" src="main1.js"></script>
<!-- for production -->
<script type="module" src="main2.js"></script>
{% endblock %}
目前我来回手动:
- 启用 main1.js 并禁用 main2.js,用于开发
- 禁用 main1.js 并启用 main2.js,用于生产
我想通过 jinja2 自动控制这一点if
,方法是根据环境变量控制要加载的 js 文件。以下代码有效,但我想使用环境变量(而不是 python 变量current_user.role)进行控制
{% block javascript %}
{% if (current_user.role == "admin") %}
<!-- for development -->
<script type="module" src="main1.js"></script>
{% else %}
<!-- for production -->
<script type="module" src="main2.js"></script>
{% endif %}
{% endblock %}
这可能吗?
谢谢
解决方案
我发现这可以通过以下方式完成:
cat main.py
...
from flask import render_template, session
...
@bp.route('/')
def main_page():
...
session['mode'] = 'development'
return render_template('main.html', mode=session['development'])
cat templates/main.html
...
{% block body1 %}
{% if mode == "development" %}
<!-- for development -->
<script type="module" src="main1.js"></script>
{% else %}
<!-- for production -->
<script type="module" src="main2.js"></script>
{% endif %}
{% endblock %}
推荐阅读
- oracle - Oracle 将 NCLOB 数据插入 NVARCHAR2
- python - “pip3 install virtualenv”什么也没做
- matlab - matlab不规则中的子图问题
- mongodb - 如何仅获取 mongodb 中具有 3 个不同值的文档?
- django - Django:使用表单工具在页面中拆分表单并保存到数据库
- android - 清除排队的视图无效(由 postInvalidateDelayed 排队)
- reactjs - 在 React 中绑定数组内的值
- javascript - 在某些浏览器中,onkeypress repeat 总是返回 false
- android-studio - Android Studio:使用 SharedPreferences 保存和加载 ArrayList
- vue.js - 使用 vue-cli 将图像路径从 vue.js 中的父级传递给子级