django 最大_顶级python3项目汇总(python3学习资源)-django过滤器

本文介绍了如何在Django项目中创建和使用自定义过滤器,以实现如求列表最大值等基本逻辑处理功能,避免核心逻辑模块的冗余。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4b1ddd89e6603e18d984d6807d7d1b63.png

####django过滤器的本质是函数,但"函数"太多了,为了显示自己的与众不同,设计者们想了个名字"过滤器"...

####django有一些内置的过滤器,但和"新手赛车"不多(把字母转成小写,求数组长度,从数组中取一个随机值),功能很基础(不够强大)...

####抱着一种"研究琢磨"的心态,试着自己动手写一个过滤器:功能很简单,求一个数组中的最大值(今天太晚了,偷个懒哈~)

##功能是很简单的:

d0b6fe8bb9219127f30b6459cdfb90e7.png

##先给出我的一点体会: 在django是MVP的架构,数据模型交给Model,逻辑处理交给View,样式模板交给temPlate,这是公认的合理架构.

随着项目规模的增大,会出现一些问题,view掌管了所有的逻辑处理,一些很基础的逻辑功能(比如求最大值,最小值,给用户名加个前缀)是没必要与核心逻辑放在一起的,不仅让代码显得冗余,而且也影响核心模块的迭代维护...

所以django的设计者,决定把一些很基础通用的逻辑模块单独取出,放到app目录下的templatetags文件夹内(文件夹名字不可改,否则会django会无法识别),templatetags可以存放多个文件,每个文件可以存放多个功能相关的过滤器,使用功能相关的过滤器时,直接导入单个文件就可以一并使用相关功能,不愧是django,框架设计真的很赞!

##具体使用规则:

####1.如果对某个app下的网页使用过滤器,则在对应app的根目录下,创建名为templatetags的文件夹(这里的pad为一个独立的app)

a509de785b939f1f548b7f222ca8bc0d.png

####2.在templatetags文件夹下,新建空文件__init__.py(这是python的规矩,__init__.py表示其所在的文件夹是一个可以载入的模块,__init__文件内容可为空),新建文件zhao_filter.py(这个文件可以存放多个过滤器,文件名字可自定义...)

7182f1d25bda7fd4b27fa2deeeba69e6.png

####3.在my_filter.py中,先导入头文件,编写过滤器函数(这里偷个懒,直接用python的内置函数做示范),注册过滤器(还是喜欢装饰器);

from django.template import Library# 将注册类实例化为register对象register = Library()# 使用装饰器注册@register.filterdef get_list_max(val): # val为一个列表,通过过滤器取得其中的最大值 result = max(val) return result

####4.将过滤器加载到html, 使用自定义的过滤器

 过滤器{# 加载过滤器所在的文件,由于templatetags的文件名是固定的,django可以直接找到过滤器文件所在的位置 #}{% load zhao_fillter %}{# 显示列表数据 #}列表的数据为:{{ my_list }}{# 使用自定义的过滤器get_list_max,获得列表中最大的值 #}列表中的最大值为:{{ my_list | get_list_max }}

有时候测试服务器会抽风,找不到过滤器,此时删除__init__.py,再重新创建__init__.py即可!

来源:zhaoolee ,只作分享,不作任何商业用途,版权归原作者所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值