首页 > 代码库 > 自定义模板语言之simple_tag和自定义过滤器
自定义模板语言之simple_tag和自定义过滤器
扩展你的模板系统
一般是扩展模板的tag和filter两个功能。可以用来创建你自己的tag和filter功能库。
创建模板库
分为两步:
1. 首先决定由模板库在哪一个注册的app下放置,你可以放在一个已有的app目录下,也可以新建一个专门管理模板库的app,比如python manage.py startapp myTemplateLibrary。推荐后者,因为可以方便将来的重用。
2. 在app目录下创建templatetags子目录,并在里面创建两个文件,__init__.py,用来声明这是一个包,另一个是你的tag/filter定义文件。比如myNewLibrary.py,那么在模板文件中可以这样使用:{% load myNewLibrary %}
在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名
{% load xx %}
自定义simple_tag
在templatetags目录下的py文件中写:
#!/usr/bin/env python# -*- coding:utf-8 -*-from django import templatefrom django.utils.safestring import mark_saferegister = template.Library()@register.simple_tagdef my_simple_time(v1,v2,v3): return v1 + v2 + v3
在HTML中写:
{% load xx %}<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body>{% my_simple_time 1 2 3%}</body></html>
在自定义simple_tag的html中不能用于if条件作为判断,so引出了自定义过滤器函数
自定义过滤器函数
(最多俩个参数,html中可以有if条件语句)
自定义的过滤器就是一个带1,2个参数的python函数,一个参数放变量值,一个用来放选项值,比如{{ var|remove:"bar" }}, var是变量值,"bar"是选项值。
在templatetags目录下的py文件中写:
#!/usr/bin/env python# -*- coding:utf-8 -*-from django import templatefrom django.utils.safestring import mark_saferegister = template.Library()@register.filterdef detail3(value,arg): allcount, remainder = arg.split(‘,‘) allcount = int(allcount) remainder = int(remainder) if value%allcount == remainder: return True return False
在HTML中写:
{% load xx %}<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body>{{ 23|detail4:"4,0" }}{% if 23|detail4:"4,0" %}<h1>123</h1>{% endif %}</body></html>
自定义模板语言之simple_tag和自定义过滤器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。