Django 自定义过滤器

Posted niuxingyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

 

以上是关于Django 自定义过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Django—— 模板层:变量过滤器标签自定义标签和过滤器

将 django 用作独立模板引擎时如何使用自定义过滤器

如何将javascript变量传递给django自定义过滤器

Django 1.9:为 QuerySet 创建复杂的自定义过滤器方法

如何将javascript变量传递给django自定义过滤器

Django之Django模板自定义过滤器