在模板中访问 jinja2 全局变量
Access jinja2 globals variables inside template
我有一个正在构建的 Flask 应用程序,但我在从我的模板中访问我的 jinja2 全局变量时遇到问题,知道我在这里做错了什么吗?
__init__.py
from config import *
...
#Initialize Flask App
app = Flask(__name__)
#Jinja2 global variables
jinja_environ = app.create_jinja_environment()
jinja_environ.globals['DANISH_LOGO_FILE'] = DANISH_LOGO_FILE
jinja_environ.globals['TEMPLATE_MEDIA_FOLDER'] = TEMPLATE_MEDIA_FOLDER
...
config.py
...
TEMPLATE_MEDIA_FOLDER = '../static/img/media_library/' #This is the location of the media_library relative to the templates directory
DANISH_LOGO_FILE = '100danish_logo.png'
...
示例模板
<p>{{ TEMPLATE_MEDIA_FOLDER }}</p>
在这种情况下,TEMPLATE_MEDIA_FOLDER 不会向模板打印任何内容。
我假设您在此处使用 Flask 的 render_template
函数,该函数默认链接到应用程序的 jinja_env
属性。
所以尝试这样的事情,
app = Flask(__name__)
app.jinja_env.globals['DANISH_LOGO_FILE'] = DANISH_LOGO_FILE
app.jinja_env.globals['TEMPLATE_MEDIA_FOLDER'] = TEMPLATE_MEDIA_FOLDER
接受的答案有效,但它给了我 pylint 错误
[pylint] E1101:Method 'jinja_env' has no 'globals' member
这样做可以避免错误:
app = Flask(__name__)
app.add_template_global(name='DANISH_LOGO_FILE', f=DANISH_LOGO_FILE)
我有一个正在构建的 Flask 应用程序,但我在从我的模板中访问我的 jinja2 全局变量时遇到问题,知道我在这里做错了什么吗?
__init__.py
from config import *
...
#Initialize Flask App
app = Flask(__name__)
#Jinja2 global variables
jinja_environ = app.create_jinja_environment()
jinja_environ.globals['DANISH_LOGO_FILE'] = DANISH_LOGO_FILE
jinja_environ.globals['TEMPLATE_MEDIA_FOLDER'] = TEMPLATE_MEDIA_FOLDER
...
config.py
...
TEMPLATE_MEDIA_FOLDER = '../static/img/media_library/' #This is the location of the media_library relative to the templates directory
DANISH_LOGO_FILE = '100danish_logo.png'
...
示例模板
<p>{{ TEMPLATE_MEDIA_FOLDER }}</p>
在这种情况下,TEMPLATE_MEDIA_FOLDER 不会向模板打印任何内容。
我假设您在此处使用 Flask 的 render_template
函数,该函数默认链接到应用程序的 jinja_env
属性。
所以尝试这样的事情,
app = Flask(__name__)
app.jinja_env.globals['DANISH_LOGO_FILE'] = DANISH_LOGO_FILE
app.jinja_env.globals['TEMPLATE_MEDIA_FOLDER'] = TEMPLATE_MEDIA_FOLDER
接受的答案有效,但它给了我 pylint 错误
[pylint] E1101:Method 'jinja_env' has no 'globals' member
这样做可以避免错误:
app = Flask(__name__)
app.add_template_global(name='DANISH_LOGO_FILE', f=DANISH_LOGO_FILE)