Django 自定义过滤器

 

设定自定义过滤器之前要现在配置文件内把自己项目名在 INSTALLED_APPS 内导入

#已安装的django应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #将自己的应用,填充到配置文件中去
    'mysite'
]

 

在settings.py文件同级目录中建立templatetags目录用于存放自定义过滤器的py文件

 

自定义过滤器的相应操作

#导包
#导入模板模块
from django import template

#注册过滤器对象
register = template.Library()

#自定义过滤器
#在django内部,通过装饰器的方式来注册自定义过滤器
@register.filter
def my_str(val):
    return "$" + val

#定义一个双参数的过滤器
@register.filter
def my_str_two(val,p1):
    return val + p1

#定义一个多参数的过滤器
#注册过滤器的时候,需要注册simple_tag
@register.simple_tag
def my_str_many(val,p1,p2):
    return val + p1 +p2

#定义一个取余数的过滤器
@register.filter
def get_line(val):
    return int(val) % 2

定义好的自定义过滤器文件在html文件导入过滤器文件后即可直接调用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>自定义过滤器的使用</title>
    <style>
        
        table{
            border: 1px solid red;
            padding: 30px;
        }
        tr{
            border: 1px solid blueviolet;
        }
        .tr2{
            background-color: brown;
        }
        .tr1{
            background-color: goldenrod;
        }
    
    </style>
</head>
<body>

    {# 导入过滤器文件 #}
    {% load my_filter %}

    {{ test_str | my_str }} <br>


    {{ test_list }} <br>

    {{ test_list | length }} <br>

    {# 两个参数,进行调用 #}
    {{ '你好' | my_str_two:'不好' }}<br>

    {# 调用多参数的过滤器 #}
    {% my_str_many "你好" "不好" "啊" %}<br>

    {# 使用逻辑判断 #}

    {% if test_int == 100 %}
    等于一百
    {% else %}
    不等于一百
    {% endif %}<br>

    {% if test_int > 100 %}
    大于
    {% elif test_int < 100 %}
    小于
    {% else %}
    等于
    {% endif %}

</body>
</html>

 

posted @ 2019-01-20 21:09  TheoldmanPickgarbage  阅读(139)  评论(0编辑  收藏  举报