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 %}
原文地址:https://www.cnblogs.com/cjxxl1213/p/13598563.html