深入理解Django的自定义过滤器

 更新时间:2017年10月17日 10:40:33   作者:_昭昭_  
这篇文章主要给大家介绍了关于Django自定义过滤器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

本文主要给大家介绍了关于Django自定义过滤器的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

过滤器与函数

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

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

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

功能是很简单的:


过滤器

先给出我的一点体会:

在django是MVP的架构,数据模型交给Model,逻辑处理交给View,样式模板交给temPlate,这是公认的合理架构.

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

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

具体使用规则:

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


新建目录

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


新建文件

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

from django.template import Library

# 将注册类实例化为register对象
register = Library()


# 使用装饰器注册
@register.filter
def get_list_max(val):
 # val为一个列表,通过过滤器取得其中的最大值
 result = max(val)

 return result

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

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>过滤器</title>
</head>
<body>

{# 加载过滤器所在的文件,由于templatetags的文件名是固定的,django可以直接找到过滤器文件所在的位置 #}
{% load zhao_fillter %}


{# 显示列表数据 #}
列表的数据为:{{ my_list }}

<hr>

{# 使用自定义的过滤器get_list_max,获得列表中最大的值 #}
列表中的最大值为:{{ my_list | get_list_max }}

</body>
</html>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • 使用DataFrame实现两表连接方式

    使用DataFrame实现两表连接方式

    这篇文章主要介绍了使用DataFrame实现两表连接方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • PyCharm搭建Spark开发环境实现第一个pyspark程序

    PyCharm搭建Spark开发环境实现第一个pyspark程序

    这篇文章主要介绍了PyCharm搭建Spark开发环境实现第一个pyspark程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 分析并输出Python代码依赖的库的实现代码

    分析并输出Python代码依赖的库的实现代码

    这篇文章主要介绍了分析并输出Python代码依赖的库的实现代码,需要的朋友可以参考下
    2015-08-08
  • pip更新问题的解决:'python -m pip install --upgrade pip' 报错问题(最新推荐)

    pip更新问题的解决:'python -m pip install -

    这篇文章主要介绍了pip更新问题的解决:'python -m pip install --upgrade pip' 报错问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • python如何将mat文件转为png

    python如何将mat文件转为png

    这篇文章主要介绍了python如何将mat文件转为png,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 利用Python制作本地Excel的查询与生成的程序问题

    利用Python制作本地Excel的查询与生成的程序问题

    最近遇到这样一个项目需求制作一个程序有一个简单的查询入口实现Excel的查询与生成,今天教大家利用Python制作本地Excel的查询与生成的程序,感兴趣的朋友跟随小编一起看看吧
    2022-06-06
  • Python实现识别图片内容的方法分析

    Python实现识别图片内容的方法分析

    这篇文章主要介绍了Python实现识别图片内容的方法,结合实例形式分析了tesseract模块的下载、安装配置及使用tesseract模块进行图片识别的相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • 在Python3中初学者应会的一些基本的提升效率的小技巧

    在Python3中初学者应会的一些基本的提升效率的小技巧

    这篇文章主要介绍了在Python3中的一些基本的小技巧,有利于刚刚上手Python的初学者提升开发效率,需要的朋友可以参考下
    2015-03-03
  • 如何使用OpenCV实现手势音量控制

    如何使用OpenCV实现手势音量控制

    今天来学习一下如何使用OpenCV实现手势音量控制,本次实验需要使用OpenCV和mediapipe库进行手势识别,并利用手势距离控制电脑音量,感兴趣的朋友跟随小编一起看看吧
    2023-11-11
  • Python中为什么要用self探讨

    Python中为什么要用self探讨

    这篇文章主要介绍了Python中为什么要用self探讨,本文讲解了Python要self的理由、为何Python给self赋值而你不必给self赋值?等内容,需要的朋友可以参考下
    2015-04-04

最新评论