Django从理论到实战(part20)--DLT常用过滤器
学习笔记,仅供参考
参考自:Django打造大型企业官网–Huang Y;
本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列中,尽量详细的记录一下。
文章目录
- DLT常用过滤器
- 过滤器简介
- 准备工作
- 过滤器add
- 过滤器cut
- 过滤器date
- 过滤器default
- 过滤器default_if_none
- 过滤器first
- 过滤器last
- 过滤器join
- 过滤器length
- 过滤器lower
- 过滤器upper
- 过滤器random
- 过滤器slice
- 过滤器stringtags
- 过滤器truncatechars
- 过滤器truncatechars_html
DLT常用过滤器
过滤器简介
在模版中,有时候需要对一些数据进行处理以后才能使用。在Python
中我们通过函数的形式来完成,而在模版中,则是通过过滤器来实现,过滤器中是通过|
来处理数据的。
准备工作
我们首先新建一个项目newwebsite2,专门学习这个知识点:
django-admin startproject newwebsite2
进入项目文件夹:
cd newwebsite2
开启服务:
python manage.py runserver
在项目下创建模板文件夹templates,并在settings.py中设置模板文件夹的路径:
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]
过滤器add
该过滤器会将传进来的参数添加到value上,例如:
{{ value|add:"2" }}
上面的代码中,如果value
是等于4,那么结果将是6,如果value
是等于一个普通的字符串,比如abc
,那么结果将是abc2
,add
过滤器的源代码如下:
def add(value, arg):try:return int(value) + int(arg)except (ValueError, TypeError):try:return value + argexcept Exception:return ''
- 举个例子
现在,我们创建一个模板文件add_file.py:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>小黄之家</title>
</head>
<body><p>{{ value1|add:value2 }}</p></body>
</html>
在主urls.py文件中添加路由:
from django.contrib import admin
from django.urls import path
from . import viewsurlpatterns = [path('admin/', admin.site.urls),path('add/', views.add_list),
]
创建视图函数:
from django.http import HttpResponse
from django.shortcuts import renderdef add_list(request):context = {"value1":[1, 2, 3], "value2":[4, 5, 6]}return render(request, "add_file.html",context = context)
向http://127.0.0.1:8000/add/发起访问:
过滤器cut
该过滤器会移除value中所有指定的字符串,类似于python
中的replace(args,"")
,例如:
{{ value|cut:" " }}
上述的代码将会移除value
中所有的空格字符。
cut
过滤器的源代码如下:
def cut(value, arg):"""Remove all values of arg from the given string."""safe = isinstance(value, SafeData)value = value.replace(arg, '')if safe and arg != ';':return mark_safe(value)return value
- 举个例子
现在,我们创建一个模板文件cut_file.py:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>小黄之家</title>
</head>
<body><p>{{ "Hello World !"|cut:" " }}</p></body>
</html>
在主urls.py文件中添加路由:
urlpatterns = [path('admin/', admin.site.urls),path('add/', views.add_list),path('cut/', views.cut_list),path('my_test/', views.my_test),
]
创建视图函数:
def cut_list(request):return render(request, "cut_file.html")
向http://127.0.0.1:8000/cut/发起访问:
过滤器date
该过滤器将一个日期按照指定的格式,格式化成字符串,例如:
#视图模块中
context = {"birthday": datetime.now()
}#模版文件中
{{ birthday|date:"Y/m/d" }}
上述的代码将会输出2020/07/04
。其中Y
代表的是四位数字的年份,m
代表的是两位数字的月份,d
代表的是两位数字的日。
更多时间格式化的方式,见下表:
格式字符 | 描述 | 示例 |
---|---|---|
Y | 四位数字的年份 | 2018 |
m | 两位数字的月份 | 01-12 |
n | 月份,1-9前面没有0前缀 | 1-12 |
d | 两位数字的天 | 01-31 |
j | 天,但是1-9前面没有0前缀 | 1-31 |
g | 小时,12小时格式的,1-9前面没有0前缀 | 1-12 |
h | 小时,12小时格式的,1-9前面有0前缀 | 01-12 |
G | 小时,24小时格式的,1-9前面没有0前缀 | 1-23 |
H | 小时,24小时格式的,1-9前面有0前缀 | 01-23 |
i | 分钟,1-9前面有0前缀 | 00-59 |
s | 秒,1-9前面有0前缀 | 00-59 |
过滤器default
如果value被评估为False
,就使用default
过滤器提供的默认值,例如:
{{ value|default:"nothing" }}
如果value
是等于一个空的字符串。比如""
,那么以上代码将会输出nothing
。
备注:[]
,""
,None
,{}
等这些在if
判断中为False
的value,在default过滤器中会被评估为False
过滤器default_if_none
如果value是None
,就使用default_if_none
提供的默认值,例如:
{{ value|default_if_none:"nothing" }}
如果value
等于""
,即空字符串,以上代码会输出空字符串,只有当value
为None
时,以上代码才会输出nothing
。
过滤器first
该过滤器将返回列表/元组/字符串中的第一个元素,例如:
{{ value|first }}
上述代码中,如果value
为['a','b','c']
,那么将返回a
。
过滤器last
该过滤器将返回列表/元组/字符串中的最后一个元素,示例代码如下:
{{ value|last }}
如果value
是等于['a','b','c']
,那么将返回c
。
过滤器join
该过滤器类似于Python
中的join
函数,将列表/元组/字符串用指定的字符进行拼接,例如:
{{ value|join:"-" }}
如果value
是等于['a','b','c']
,那么将返回a-b-c
。
过滤器length
该过滤器将获取列表/元组/字符串/字典的长度,例如:
{{ value|length }}
如果value
是等于['a','b','c']
,那么将返回3
;如果value
为None
,那么将返回0
。
过滤器lower
该过滤器将value中所有的字符全部转换成小写,例如:
{{ value|lower }}
如果value
等于Hello World
,那么将输出hello world
。
过滤器upper
该过滤器类似于lower
,只不过是将指定的字符串全部转换成大写。
过滤器random
该过滤器可以在列表/字符串/元组中随机的选择一个值,例如:
{{ value|random }}
如果value
d等于['a','b','c']
,那么Django将会在a
, b
, c
中随机选择一个返回。
过滤器slice
该过滤器类似于Python
中的切片操作,例如:
{{ some_list|slice:"2:" }}
以上代码将会将some_list
从2
开始做切片操作。
过滤器stringtags
该过滤器会删除字符串中所有的html
标签,例如:
{{ value|striptags }}
如果value
是<strong>hello world</strong>
,那么将会输出hello world
。
过滤器truncatechars
如果字符串value的长度超过了该过滤器指定的长度,那么就会进行切割,并且会拼接三个点来作为省略号,例如:
{{ value|truncatechars:5 }}
如果value
等于北京欢迎您~
,那么输出的结果是北京...
这就奇怪了,为什么输出结果不是北京欢迎您…呢?
这是因为,三个点也占了三个字符,北京
+ ...
的字符长度为5,所以是北京...
当字符串vlaue的长度没有超过该过滤器指定的长度,那么将不进行切割,例如:
{{ "马鞍山"|truncatechars:5 }}
上述代码的输出结果依然是马鞍山
过滤器truncatechars_html
该过滤器类似于truncatechars
,只不过不会切割html
标签,例如:
{{ value|truncatechars:5 }}
如果value
是等于<p>北京欢迎您~</p>
,那么输出的是<p>北京...</p>
。
Django从理论到实战(part20)--DLT常用过滤器相关推荐
- Django从理论到实战(part28)--ORM常用Field详解
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: ORM常用Field详解 AutoField 映射到数据库中是int类型,可以有自动增长的特性.一般不需要使用这个类型,如果 ...
- Django从理论到实战(part21)--自定义模板过滤器
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...
- Django从理论到实战(part29)--Field的常用参数
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: Field的常用参数 null 如果设置为True,Django将会在映射表的时候指定是否为空.默认是为False.在使用字 ...
- Django从理论到实战(part25)--数据库操作
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...
- Django从理论到实战(part48)--Django表单
学习笔记,仅供参考,有错必纠 参考自:某网课 文章目录 Django表单 Django表单概述 HTML中的表单 Django中的表单 Django中表单使用流程 表单验证 常用的Field 常用验证 ...
- Django从理论到实战(part47)--ListView类
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 类视图 ListView类 举个例子 Paginator和Page类 Paginator常用属性 Pag ...
- Django从理论到实战(part43)--HttpResponse对象
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 HttpResponse对象 常用属性 常用方法 HttpResponse对象 Django服务器接收到 ...
- Django从理论到实战(part41)--WSGIRequest对象
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 WSGIRequest对象 WSGIRequest对象常用属性 WSGIRequest对象常用方法 WS ...
- Django从理论到实战(part37)--关于迁移
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y:官方文档 关于迁移 makemigrations makemigrations命令可以生成模型的迁移脚本.该命令的常 ...
最新文章
- 爬虫解析利器PyQuery详解及使用实践
- 电感是怎么储存能量的
- Android开发之获取常用android设备参数信息
- 3D-BoNet:比3D点云实例分割算法快10倍!代码已开源
- dell R710 更换raid卡后,raid卡信息没有了,处理方案
- 作为前端程序员,你不能不知道的这个小技巧
- php环境配置PHPWAMP
- Java到底能干什么?有哪些实际用途?
- [SharePoint教程系列]安装之后的常见操作 如何打开管理中心
- Python编程案例:中文金额转换并计算
- holder.js如何使用
- 使用长角牛演示:防止ARP被攻击的原理和配置----------划水也别忘记学着玩
- 图文翻页-兼容IE8和Chrome浏览器
- C语言输出4*5的矩阵
- 向右看齐Look Up
- 电商 lamp java_搭建LAMP环境部署Ecshop电商网站
- Python中list、tupe、dic、set的使用小记
- windows 系统扩容C盘注意事项
- vulnhub Vegeta: 1
- 黑*头条_第12章_ 热点文章处理
热门文章
- unity图片拖不进去_Unity UGUI实现简单拖拽图片功能
- linux怎么用jconsole_jconsole监控上Linux上的JVM
- tomcat jar包_tomcat学习|tomcat中的类加载器
- 循环往list中add对象却总是add的是一个对象
- 服务器维护,日志分析常用命令
- logcat read :Invaild argument
- tabBar颜色改动
- 《UNIX网络编程 卷1:套接字联网API(第3版)》——第2章 传输层:TCP、UDP和SCTP 2.1概述...
- 【右滑返回】滑动冲突 Scroller DecorView
- django-groundwork