Django教程
- Jinja2配置自定义过滤器
- Django教程-定时任务crontab
- 解决uwsgi报错:No such process [core/uwsgi.c line 1693]
- 解决-doesn't declare an explicit app_label and isn't in an application in INSTALL
- Django教程-Model字段大全,选项详解
- Django教程-子应用添加后台管理
- Django教程-安装DjangoUeditor3
- Django教程-设置默认导包路径
- Django教程-Django配置redis
- Django教程-django配置mysql数据库
- Django教程-uwsgi配置详解
- 解决:Django定时器无法启动
- Django教程-Django中配置jinja2模板
- Django教程-创建一个最简单的django项目
Jinja2配置自定义过滤器
Jinja2配置自定义过滤器
关于jinja2
Jinja2是基于python的模板引擎,功能比较类似于于PHP的smarty,J2ee的Freemarker和velocity。 它能完全支持unicode,并具有集成的沙箱执行环境,应用广泛。jinja2使用BSD授权。
与大部分模板引擎相同,Django的模板引擎也提供了Jinja2过滤器的功能,该过滤器的作用是对后端传递给前端的数据在显示或者使用前进行进一步的修饰或者筛选,从而可以将后端视图函数的对数据的处理变得更加的简洁,同时也提高了数据的耦合性。默认的过滤器不能满足我们的要求时,就需要根据自己的要求自定义变量过滤器
虽然Django也自带模板 但是为了编程效率与编程体验 我们一般使用jinja2模板(自称运行效率十倍于Django自带模板)
常用jinja2自带过滤器
jinja自带的过滤器我们可以在jinja2的安装包里面的filters.py文件里查看,如下:
filters.py的文件地址:/home/python/.virtualenvs/scrapy/lib/python3.5/site-packages/jinja2
FILTERS = { "abs": abs, "attr": do_attr, "batch": do_batch, "capitalize": do_capitalize, "center": do_center, "count": len, "d": do_default, "default": do_default, "dictsort": do_dictsort, "e": escape, "escape": escape, "filesizeformat": do_filesizeformat, "first": do_first, "float": do_float, "forceescape": do_forceescape, "format": do_format, "groupby": do_groupby, "indent": do_indent, "int": do_int, "join": do_join, "last": do_last, "length": len, "list": do_list, "lower": do_lower, "map": do_map, "min": do_min, "max": do_max, "pprint": do_pprint, "random": do_random, "reject": do_reject, "rejectattr": do_rejectattr, "replace": do_replace, "reverse": do_reverse, "round": do_round, "safe": do_mark_safe, "select": do_select, "selectattr": do_selectattr, "slice": do_slice, "sort": do_sort, "string": soft_unicode, "striptags": do_striptags, "sum": do_sum, "title": do_title, "trim": do_trim, "truncate": do_truncate, "unique": do_unique, "upper": do_upper, "urlencode": do_urlencode, "urlize": do_urlize, "wordcount": do_wordcount, "wordwrap": do_wordwrap, "xmlattr": do_xmlattr, "tojson": do_tojson, }
jinja2自定义过滤器
jinja2虽然有很多过滤器, 但总有满足不了自己需求的时候 这时候就需要我们自己定义过滤器
首先,找到你安装jinja2时候自建的python文件,写下面类型代码:
env.filters['自定义过滤器名称'] = 自定义函
def 自定义函数():
passfrom django.contrib.staticfiles.storage import staticfiles_storage from django.urls import reverse import json from jinja2 import Environment def environment(**options): env = Environment(**options) env.globals.update({ 'static': staticfiles_storage.url, 'url': reverse, }) env.filters['test'] = test # 自定义过滤器test env.filters['strtojson'] = strtojson #自定义过滤器strtojson env.filters['strtolist'] = strtolist #自定义过滤器 strtolist return env def test(value, data): return value.replace(data, 'hello') def strtojson(data): return json.loads(data) def strtolist(data): return eval(data)
至此,jinja2自定义过滤器就完成了,你可以在在模板里这样使用:{{content|strtojson}}或者{{content|strtolist}}等等
最后修改:2020年10月18日 14:38