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>

原文地址:https://www.cnblogs.com/Niuxingyu/p/10296196.html

时间: 2024-10-10 11:56:23

Django 自定义过滤器的相关文章

Django 自定义过滤器和模板标签

前提:自定义模板标签和过滤器必须位于Django的某个应用中,这个应用可以包含一个templatetags目录, 和models.py views.py 处于同一级目录.若这个templatetags目录不存在则创建他,同时在该目录下建立一个py文件:__init__.py 文件,使得该目录可以作为Python包.在添加这个模块后,需要重启服务器以便使用.注意命名不要冲突.eg: polls/ __init__.py models.py templatetags/ 在模板中可以这样用:{% lo

django自定义过滤器及模板标签

创建一个模板库 不管是写自定义标签还是过滤器,第一件要做的事是创建模板库(Django能够导入的基本结构). 创建一个模板库分两步走: 第一,决定模板库应该放在哪个Django应用下. 如果你通过 manage.py startapp 创建了一个应用,你可以把它放在那里,或者你可以为模板库单独创建一个应用. 我们更推荐使用后者,因为你的filter可能在后来的工程中有用. 无论你采用何种方式,请确保把你的应用添加到 INSTALLED_APPS 中. 我们稍后会解释这一点. 第二,在适当的Dja

django自定义过滤器及标签的布置

1:在app文件下新建templatetags,文件名不可改,django运行时会自动寻址. 2:templatetags下新建py文件. 3:py文件里需要引用申明:from django import template // 引入模板 from django.utils.safestring import mark_safe //此句与mark_safe函数有关,使用不到可略去 register=template.Library() // 注册 4:py文件里定义函数体:def...(x,y

django自定义过滤器和标签

1.自定义过滤器和标签的流程: 1.在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为app01的app下创建了一个templatetags的包,并在该包下创建了一个名为my_tags的文件 2.settings文件中的INSTALLD_APPS内必须含有该app.接下来,我们需要确认settings文件中的INSTALLED_APPS变量中已经有了app01 INSTALLED_APPS = [ 'django.contrib.admin', 'dja

Django(自定义过滤器和自定义标签)

模版是一个用django模版语言标记过的python字符串.模版可以包含模版标签和变量. 模版标签是在一个模版里起作用的标记.比如,一个模版标签可以产生控制结构的内容(if或者for),可以获取数据库内容或者访问其它模版标签. 一个标签块被{%%}包围 变量标签被{{}}包围 context是一个传递给模版的key-value对. 模版渲染是通过从context获取值来替换模版中变量并执行所有的模版标签. 创建自定义标签目录 首先在app底下创建一个templatetags目录,添加一下两个.p

Django自定义过滤器

1.编写过滤器函数myfilter.py # -*- coding: utf-8 -*- from django import template register = template.Library() # 定义一个将日期中的月份转换为大写的过滤器,如8转换为八 @register.filter def month_to_upper(key): return ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'][key.m

Django中自定义过滤器的使用

我在这里做的是: 从数据库查出id递增的一些信息,展示在前台. 编写一个过滤器判断查出数据的id是偶数的返回True 奇数返回False 1 创建项目,创建应用,注册应用,配置settings.py文件,配置urls映射,编写views试图,编写模板templates,编写models模块 切记 注册应用.  很多伙伴找不到自己定义的过滤器,是因为忘记注册应用! 2 创建过滤器的目录: 实际上,在项目目录或者应用目录下创建都是可以的,创建一个名为templatetags的python模块 在我这

django之创建第6-1个项目-自定义过滤器

1.在站点blog目录下创建templatetags文件夹 2.templatetags目录下需要作为一个包来处理和调用其中的内容,需要有一个__init__.py文件 3.在templatetags目录下创建percent.py文件(里面定义过滤器) 4.编写percent.py文件,定义过滤器 # -*- coding: UTF-8 -*- #自定义过滤器,注意这里编码一定不要掉了,不然会报错啊~~~~ from django import template register = templ

django 自定义模板过滤器

参考:http://www.cnblogs.com/qwj-sysu/p/4246605.html 做的页面,一个tr里有两个td, 1.3.5等奇数数据要放在第一个td, 2.4.6等偶数数据要放在第二个td, (如果已经没有数据,td 内容要为空), 所以要根据取余数的结果来判断; 但django的模板没有取余操作,只好自定义一个 django的模板配置在:setting.py TEMPLATES = [ { 'BACKEND': 'django.template.backends.djan