首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >访问模板内的jinja2全局变量

访问模板内的jinja2全局变量
EN

Stack Overflow用户
提问于 2015-10-25 06:37:06
回答 2查看 7.5K关注 0票数 2

我有一个我正在构建的Flask应用程序,我在从我的模板中访问我的jinja2全局变量时遇到了问题,你知道我在这里做错了什么吗?

__init__.py

代码语言:javascript
复制
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

代码语言:javascript
复制
...

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'

...

示例模板

代码语言:javascript
复制
<p>{{ TEMPLATE_MEDIA_FOLDER }}</p>

在这种情况下,TEMPLATE_MEDIA_FOLDER不会向模板输出任何内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-25 07:02:53

我将假设您在这里使用的是Flask的render_template函数,该函数默认链接到应用程序的jinja_env属性。

所以试着这样做,

代码语言:javascript
复制
app = Flask(__name__)
app.jinja_env.globals['DANISH_LOGO_FILE'] = DANISH_LOGO_FILE
app.jinja_env.globals['TEMPLATE_MEDIA_FOLDER'] = TEMPLATE_MEDIA_FOLDER
票数 10
EN

Stack Overflow用户

发布于 2018-06-07 04:13:14

公认的答案是有效的,但它给了我pylint错误。

代码语言:javascript
复制
[pylint] E1101:Method 'jinja_env' has no 'globals' member

这样做可以避免出现错误:

代码语言:javascript
复制
app = Flask(__name__)
app.add_template_global(name='DANISH_LOGO_FILE', f=DANISH_LOGO_FILE)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33324090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档