jinja2-humanize-extension - 如何将这些实现到代码中?
jinja2-humanize-extension - how to implement these into code?
我想在我的 jinja2 flask 应用程序中使用人性化功能,文档中的示例对我来说太模糊了。我用 pip 安装了扩展,并尝试按如下方式实现它们:
我要渲染的是:
<small class="text-muted">Time remaining: {{ ((submission.date_expiration - now)|naturaldelta()) }}</small>
尽管我不断收到错误消息:jinja2.exceptions.TemplateAssertionError: No filter named 'naturaldelta'.
我将 env = Environment(extensions=["jinja2_humanize_extension.HumanizeExtension"])
添加到我的 init.py 但意识到这没有正确添加扩展。有人有这方面的经验吗?
我猜你是在从 Flask 应用中调用 render_template
时遇到了这个错误。我注意到扩展文档中的 full example 只提到使用 env.from_string
.
进行渲染
如何在普通的 Flask 应用程序上注册它?似乎您可以在定义应用程序后设置 app.jinja_options
:
app = Flask(__name__)
app.jinja_options['extensions'] = ['jinja2_humanize_extension.HumanizeExtension']
我不确定上述方法是否“正确”。我四处寻找有关如何在 Flask 应用程序上注册 Jinja2 环境的文档,但找不到太多。这是我测试这个的方法...
根据 的一些线索,您的 Flask 应用程序应该有一个属性 app.jinja_options
,在我的新应用程序的情况下,它是空字典:
>>> app = Flask(__name__)
>>> app.jinja_options
{}
所以我添加扩展名:
>>> app.jinja_options['extensions'] = ['jinja2_humanize_extension.HumanizeExtension']
然后验证:
>>> app.jinja_options
{'extensions': ['jinja2_humanize_extension.HumanizeExtension']}
然后在终端用 Flask 的 render_template_string
:
测试
>>> from flask import render_template_string
>>> with app.app_context():
... print( render_template_string('''{{300000|humanize_naturalsize()}}''', asd='abc'))
...
300.0 kB
当您使用 render_template
作为标准呈现模板时,这应该具有相同的效果
我想在我的 jinja2 flask 应用程序中使用人性化功能,文档中的示例对我来说太模糊了。我用 pip 安装了扩展,并尝试按如下方式实现它们:
我要渲染的是:
<small class="text-muted">Time remaining: {{ ((submission.date_expiration - now)|naturaldelta()) }}</small>
尽管我不断收到错误消息:jinja2.exceptions.TemplateAssertionError: No filter named 'naturaldelta'.
我将 env = Environment(extensions=["jinja2_humanize_extension.HumanizeExtension"])
添加到我的 init.py 但意识到这没有正确添加扩展。有人有这方面的经验吗?
我猜你是在从 Flask 应用中调用 render_template
时遇到了这个错误。我注意到扩展文档中的 full example 只提到使用 env.from_string
.
如何在普通的 Flask 应用程序上注册它?似乎您可以在定义应用程序后设置 app.jinja_options
:
app = Flask(__name__)
app.jinja_options['extensions'] = ['jinja2_humanize_extension.HumanizeExtension']
我不确定上述方法是否“正确”。我四处寻找有关如何在 Flask 应用程序上注册 Jinja2 环境的文档,但找不到太多。这是我测试这个的方法...
根据 app.jinja_options
,在我的新应用程序的情况下,它是空字典:
>>> app = Flask(__name__)
>>> app.jinja_options
{}
所以我添加扩展名:
>>> app.jinja_options['extensions'] = ['jinja2_humanize_extension.HumanizeExtension']
然后验证:
>>> app.jinja_options
{'extensions': ['jinja2_humanize_extension.HumanizeExtension']}
然后在终端用 Flask 的 render_template_string
:
>>> from flask import render_template_string
>>> with app.app_context():
... print( render_template_string('''{{300000|humanize_naturalsize()}}''', asd='abc'))
...
300.0 kB
当您使用 render_template