ser*_*ach 4 python django customization jinja2
我无法弄清楚如何访问environment.filters.在标准的Jinja2示例中,我可以看到datetimeformat过滤器的示例:
def datetimeformat(value, format='%H:%M / %d-%m-%Y'):
return value.strftime(format)
Run Code Online (Sandbox Code Playgroud)
然后我们可以添加过滤器:
environment.filters['datetimeformat'] = datetimeformat
Run Code Online (Sandbox Code Playgroud)
但我附加了django_jinja应用程序,现在使用django.shortcuts的一个标准render_to_response方法(Jinja的宏,内置函数工作正常).所以我的观点得到了这样的回应
return render_to_response( html_template, result_dict )
Run Code Online (Sandbox Code Playgroud)
我只包括Jinja2应用程序,不用担心构建自定义Jinja2响应,但我不知道如何访问环境.
使用django_jinja应用程序添加自定义模板过滤器应该更改什么?
以下是该应用程序的说明:https://pypi.python.org/pypi/django-jinja/0.8.
我用过这个......
jinja2.filters.FILTERS['datetimeformat'] = datetimeformat
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
我意识到这个问题相当老了,但是在四处寻找这个问题的解决方案后,没有找到任何有用的答案,我想在这里django_jinja分享我在文档中的发现。
有两个用例:
在 Django 项目的settings.py. 当在设置中将 jinja2 指定为模板引擎时,可以完成此操作,TEMPLATES例如。
TEMPLATES = [
{
"BACKEND": "django_jinja.backend.Jinja2",
"APP_DIRS": True,
"OPTIONS": {
"match_extension": ".jinja",
"filters": {
"myfilter": "path.to.filters.myfilterfn",
...
}
}
}]
Run Code Online (Sandbox Code Playgroud)
可以从此页面获取更多详细信息,包括指定自定义扩展、上下文处理器等。
创建可重用的 Django 应用程序时注册应用程序特定的过滤器。django_jinja 再次帮助您将过滤器注册到全局过滤器库,如下所示,
from django_jinja import library
@library.filter
def mylower(name):
"""
Usage: {{ 'Hello'|mylower() }}
"""
return name.lower()
Run Code Online (Sandbox Code Playgroud)
更多详情请点击这里
上面的两个示例均已从django_jinja文档中原样删除。使用 2 当然意味着这django_jinja是您的可重用应用程序的依赖项,但如果像我一样,您对几乎所有 Django 应用程序都使用 Jinja 模板,那么这并不是什么大问题。
| 归档时间: |
|
| 查看次数: |
3418 次 |
| 最近记录: |