当前位置: 首页 > news >正文

Django自定义过滤器

一、介绍

Django过滤器是一种用于在Django模板中处理数据的技术。它们的主要作用是对模板中的变量进行加工、过滤或格式化,然后返回一个新的值供模板使用。这些过滤器可以在变量输出时,对输出的变量值做进一步的处理,以满足特定的显示需求。

目前Django内置的过滤器有:

  1. add:把add后的参数加到value上。如果是数字,则进行算术相加;如果是字符串,则进行拼接;如果是列表,则拼接成一个新列表。
  2. capfirst:将变量的第一个字母大写。如果第一个字符不是字母,则过滤器不会生效。
  3. cut:移除value中所有的与给出的变量相同的字符。
  4. date:根据给定格式,对一个date变量进行格式化。也可以不使用格式字符串,此时将采用默认的日期时间格式。
  5. default:如果value的计算结果为False,则使用给定的默认值;否则,使用该value值。
  6. default_if_none:与default过滤器类似,但只有当value的值是None时,才会使用默认值。
  7. dictsort:接收一个字典列表,并返回按参数中给出的键排序后的列表。
  8. dictsortreversed:与dictsort过滤器相同,但返回的值将是相反的顺序。
  9. first:返回列表、元组或字符串中的第一个元素。
  10. floatformat:使用四舍五入的方式格式化一个浮点类型。如果没有传递参数,则只在小数点后保留一位小数;如果传递了参数,则保留指定的小数位数。
  11. join:以指定字符串连接列表中的元素,与Python中的str.join(list)相似。
  12. last:返回列表、元组或字符串中的最后一个元素。
  13. length:返回字符串或列表的长度。对于字典,返回键的数量。如果value是None,则返回0。
  14. length_is:检查字符串或列表的长度是否等于给定的值。如果相等,则返回True;否则,返回False。
  15. linebreaks:将字符串中所有的换行符替换为HTML的段落标签<p></p>。
  16. linebreaksbr:将字符串中所有的换行符替换为HTML的换行标签<br />。
  17. linenumbers:当文本为多行时,为每行添加行号。
  18. lower:将字符串中的所有字母转换为小写。
  19. random:在给定的列表、字符串或元组中随机选择一个值。
  20. remove_tags:删除字符串中所有的HTML标签。注意,这不是Django的内置过滤器,但可以在某些模板库中找到类似功能的过滤器。
  21. safe:标记一个字符串是安全的,即关闭该字符串的自动转义。这通常用于输出HTML代码时,以避免HTML标签被转义。
  22. slice:类似于Python中的切片操作,返回列表或字符串的一部分。
  23. stringformat:格式化字符串,类似于Python的字符串格式化方法。不过,这个过滤器在Django的较新版本中可能已被弃用或替换为其他方法。
  24. title:将字符串中的每个单词的首字母大写。
  25. truncatechars:如果字符串的字符数多于指定的数目,则截断该字符串。截断的字符串将以可翻译的省略号序列(“...”)结尾。
  26. truncatechars_html:与truncatechars类似,但会考虑HTML标签。它不会截断HTML标签内的内容,而是会智能地截断文本内容,以避免破坏HTML结构。
  27. upper:将字符串中的所有字母转换为大写。

二、自定义过滤器

过滤器其实就是一个有过滤功能的函数,如果我们有一个函数:

def fmt_uname(value):return '{}***'.format(value[0])#姓+***

如果要让他成为一个过滤器,需要加上修饰符:

from django.template.defaultfilters import register
#注册过滤器
@register.filter(name='fmt_uname')
def fmt_uname(value):return '{}***'.format(value[0])#姓+***

这样这个fmt_uname函数就变成了一个过滤器。

在模板文件中使用过滤器:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<p>{{ username }}</p>
{#加载过滤器#}
{% load format_name %}
<p>{{ username | fmt_uname }}</p>
</body>
</html>

首先需要加载过滤器文件:{% load format_name %}。然后在使用过滤器:{{ username | fmt_uname }}。这句话的意思就是,对username进行过滤,使用名为fmt_uname的过滤器。

页面效果:

 


http://www.mrgr.cn/news/57093.html

相关文章:

  • 玫瑰花HTML源码
  • 《Effective C++》 笔记
  • 深入浅出理解玻尔兹曼分布及其广泛应用
  • 百度搜索竞价推广有必要做吗?怎么做效果好!
  • 交叉编译工具链下载和使用
  • C#Winform的控件基类Control
  • ffmpeg环境
  • 拍摄照片(鸿蒙系统01)
  • D46【python 接口自动化学习】- python基础之类
  • stl(1)pair
  • JVM、字节码文件介绍
  • 四、多线程带来的的⻛险-线程安全
  • webpack4 - 动态导入文件 dynamic-import 报错的解决方法
  • 安装Python及pip使用方法详解
  • 重生之“我打数据结构,真的假的?”--1.单链表(无习题)
  • React写关键字高亮的三个方案
  • 第二期:第15节,beep 大海
  • latex表格单独编译成pdf表格
  • 华为配置 之 划分VLAN
  • 哪些WordPress的AI插件,更适合收集整理地球前100大行业的信息和关键词?谢谢。0.1
  • SAP B1 缺少税务科目 - 报错 debug
  • 秃姐学AI系列之:FCN + 代码实现
  • java和嵌入式现在哪个好?
  • js 防抖函数避免重复点击提交
  • 全域商户抽佣系统:智能分账新时代
  • 读hunter_bipedal_control-main