按照 Flask 页面上的最小示例,我正在尝试构建上下文处理器:
上下文处理器.py
def inflect_this():
def inflectorize(number, word):
return "{} {}".format(number, inflectorizor.plural(word, number))
return dict(inflectorize=inflectorize)
app.py(在应用工厂内)
from context_processor import inflect_this
app.context_processor(inflect_this)
使用之前的变形函数,它根据数字变形单词,很简单,我已经将它作为 jinja 过滤器,但想看看我是否可以将它作为上下文处理器。
鉴于此处页面底部的示例:http://flask.pocoo.org/docs/templating/ ,这应该可以工作,但不能。我得到:
jinja2.exceptions.UndefinedError UndefinedError: 'inflectorize' is undefined
我对您的了解还不够,无法看到发生了什么。谁能告诉我出了什么问题?
编辑:
app.jinja_env.globals.update(inflectorize=inflectorize)
用于添加功能,并且似乎比将方法包装在方法中的开销更少,其中 app.context_processor 可能无论如何都会中继到 jinja_env.globals。