Django基础007--filter&tag
1.Django自带的过滤器filter
def index(request): print('index...........') navs = '今天天气真好fdsfds!!!' title='<h1>testsss</h1>' categories = models.Category.objects.all() articles = models.Article.objects.all() return render(request,'index.html',{'articles':articles,'navs':navs,'title':title})
-----test-------{{ navs|length }}<br> --字符长度 -----test-------{{ navs.0 }}<br> --获取第一个字符 -----test-------{{ navs|truncatechars:6 }}<br> --大于6个字符的省略显示,中文占两个字符 -----test-------{{ title|upper }}<br> --英文字母大写,相对应的有lower -----test-------{{ title|safe }}<br> --如果返回的数据是标签格式,会渲染到页面上 -----test-------{{ navs|slice:"0:8" }}<br> --切片 {{ cur_time|date:'Y/m/d H:i:s'}}<br> -- 格式化时间 {{ title |default:"管理员"}}<br> -- 如果后台没有返回则显示默认参数 {{ navs|join:"="}} <br> -- 拼接,如果是字符串则每个字符串中间用=号相连
2.Django自定义过滤器
1.在app的根目录下创建templatetags目录
2.创建tmpTags.py文件
3.固定导入
from django import template
register = template.Library() # register变量必须这么定义
4.使用装饰器@register.filter修饰自定义的filter方法
from django import template register = template.Library() #自定义过滤器 @register.filter def status_filter(x): return '自定义过滤器Filter'
5.在html文件中导入{% load tmpTags %}
6.使用
-----test----{{ navs|status_filter }}
7.filter最多支持2个参数,管道符左侧为第一个参数,冒号后为第二个参数。
实例
from django import template register = template.Library() @register.filter def status_filter(x): if x==1: return '成功' elif x==2: return '失败' else: return '自定义filter。。。' @register.filter def add(x,y): return x+y
-----test----{{ navs|status_filter }}
-----test----{{ status|status_filter }}
-----test----{{ status|add:3 }}
3.Django自定义tag
1、在app的根目录创建templatetags目录
2、创建xxx.py的文件
3、固定导入
from django import template
register = template.Library() # register变量必须这么定义
4、使用装饰器@register.simple_tag修饰自定义的simple_tag方法
5、例:
@register.simple_tag
def simple_tag_demo(x, y,z):
return x + y + z
6、在html中导入{% load demoTags %}
7、使用
{% simple_tag_demo 1 2 3 %} --自定义simple_tag
8、simple_tag可以支持多个参数,通过空格进行分格即可
实例
@register.simple_tag def simple_tag(x,y,z): return x+y+z
<h1>simple_tag</h1> {% simple_tag 1 2 3 %}