学习笔记,仅供参考

参考自: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,那么结果将是abc2add过滤器的源代码如下:

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等于"",即空字符串,以上代码会输出空字符串,只有当valueNone时,以上代码才会输出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;如果valueNone,那么将返回0

过滤器lower

该过滤器将value中所有的字符全部转换成小写,例如:

{{ value|lower }}

如果value等于Hello World,那么将输出hello world

过滤器upper

该过滤器类似于lower,只不过是将指定的字符串全部转换成大写。

过滤器random

该过滤器可以在列表/字符串/元组中随机的选择一个值,例如:

{{ value|random }}

如果valued等于['a','b','c'],那么Django将会在abc中随机选择一个返回。

过滤器slice

该过滤器类似于Python中的切片操作,例如:

{{ some_list|slice:"2:" }}

以上代码将会将some_list2开始做切片操作。

过滤器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常用过滤器相关推荐

  1. Django从理论到实战(part28)--ORM常用Field详解

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: ORM常用Field详解 AutoField 映射到数据库中是int类型,可以有自动增长的特性.一般不需要使用这个类型,如果 ...

  2. Django从理论到实战(part21)--自定义模板过滤器

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  3. Django从理论到实战(part29)--Field的常用参数

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: Field的常用参数 null 如果设置为True,Django将会在映射表的时候指定是否为空.默认是为False.在使用字 ...

  4. Django从理论到实战(part25)--数据库操作

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  5. Django从理论到实战(part48)--Django表单

    学习笔记,仅供参考,有错必纠 参考自:某网课 文章目录 Django表单 Django表单概述 HTML中的表单 Django中的表单 Django中表单使用流程 表单验证 常用的Field 常用验证 ...

  6. Django从理论到实战(part47)--ListView类

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 类视图 ListView类 举个例子 Paginator和Page类 Paginator常用属性 Pag ...

  7. Django从理论到实战(part43)--HttpResponse对象

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 HttpResponse对象 常用属性 常用方法 HttpResponse对象 Django服务器接收到 ...

  8. Django从理论到实战(part41)--WSGIRequest对象

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 WSGIRequest对象 WSGIRequest对象常用属性 WSGIRequest对象常用方法 WS ...

  9. Django从理论到实战(part37)--关于迁移

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y:官方文档 关于迁移 makemigrations makemigrations命令可以生成模型的迁移脚本.该命令的常 ...

最新文章

  1. 爬虫解析利器PyQuery详解及使用实践
  2. 电感是怎么储存能量的
  3. Android开发之获取常用android设备参数信息
  4. 3D-BoNet:比3D点云实例分割算法快10倍!代码已开源
  5. dell R710 更换raid卡后,raid卡信息没有了,处理方案
  6. 作为前端程序员,你不能不知道的这个小技巧
  7. php环境配置PHPWAMP
  8. Java到底能干什么?有哪些实际用途?
  9. [SharePoint教程系列]安装之后的常见操作 如何打开管理中心
  10. Python编程案例:中文金额转换并计算
  11. holder.js如何使用
  12. 使用长角牛演示:防止ARP被攻击的原理和配置----------划水也别忘记学着玩
  13. 图文翻页-兼容IE8和Chrome浏览器
  14. C语言输出4*5的矩阵
  15. 向右看齐Look Up
  16. 电商 lamp java_搭建LAMP环境部署Ecshop电商网站
  17. Python中list、tupe、dic、set的使用小记
  18. windows 系统扩容C盘注意事项
  19. vulnhub Vegeta: 1
  20. 黑*头条_第12章_ 热点文章处理

热门文章

  1. unity图片拖不进去_Unity UGUI实现简单拖拽图片功能
  2. linux怎么用jconsole_jconsole监控上Linux上的JVM
  3. tomcat jar包_tomcat学习|tomcat中的类加载器
  4. 循环往list中add对象却总是add的是一个对象
  5. 服务器维护,日志分析常用命令
  6. logcat read :Invaild argument
  7. tabBar颜色改动
  8. 《UNIX网络编程 卷1:套接字联网API(第3版)》——第2章 传输层:TCP、UDP和SCTP 2.1概述...
  9. 【右滑返回】滑动冲突 Scroller DecorView
  10. django-groundwork