python flask Jinja2 允许通过配置 variable_start_string 和 variable_end_string 自定义变量的起止标记
可以全局修改配置,也可以指定模块修改配置,当前我遇到的问题是 前端VUE 和 FLASK Jinja2 模版标签 {{}}冲突了,所以 只改了前台index模块的 标签:
from applications.view.index.index import index_bp
from applications.view.index.msg import msg_bp
from . import index
def register_index_views(app):
"""
初始化蓝图
"""
# 为 index_bp 蓝图设置自定义的模板标签
@index_bp.app_context_processor
def setup_jinja_env():
# 获取当前请求的上下文
from flask import request
# 获取当前应用的 Jinja2 环境
jinja_env = app.jinja_env
# 保存原始的变量标记设置
original_start = jinja_env.variable_start_string
original_end = jinja_env.variable_end_string
# 检查请求是否来自 index 模块
if request.blueprint == 'Index': # 注意这里的名称与蓝图定义的名称一致
# 修改为自定义的变量标记
jinja_env.variable_start_string = '[['
jinja_env.variable_end_string = ']]'
else:
# 恢复默认的变量标记
jinja_env.variable_start_string = original_start
jinja_env.variable_end_string = original_end
return {}
app.register_blueprint(index_bp)
app.register_blueprint(msg_bp)模版标签调用:
<div>欢迎 [[name]] 登录</div>