Python - Django - 模板语言之 Filters(过滤器)
通过管道符 "|" 来使用过滤器,{{ value|过滤器:参数 }}
Django 的模板语言中提供了六十个左右的内置过滤器
urls.py:
- from django.conf.urls import url
- from django.contrib import admin
- from app01 import views
- urlpatterns = [
- url(r'^filter_test/', views.filter_test),
- ]
default:
如果一个变量的变量名不存在或者没有给其传值,可以通过 default 使用默认值
views.py:
- from django.shortcuts import render, redirect, HttpResponse
- from app01 import models
- # Filter 测试
- def filter_test(request):
- name = "Jack"
- age = 18
- return render(
- request,
- "filter_test.html",
- {
- "name": name,
- "age": None,
- })
这里的 age 变量传了一个空值
filter_test.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Filter 测试</title>
- </head>
- <body>
- <h1>Filter 测试页面</h1>
- <!-- default -->
- {{ name }}
- <br>
- {{ name1|default:"这里不存在" }}
- <br>
- {{ age|default:"这里也不存在" }}
- </body>
- </html>
name1 是没有定义的变量
运行效果:
注意:
这里不能带有空格
length:
返回字符串或列表的长度
views.py:
- from django.shortcuts import render, redirect, HttpResponse
- from app01 import models
- # Filter 测试
- def filter_test(request):
- name = "Jack"
- age = 18
- hobby = ["Reading", "Basketball", "Movie", "Music"]
- return render(
- request,
- "filter_test.html",
- {
- "name": name,
- "age": None,
- "hobby_list": hobby,
- })
filter_test.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Filter 测试</title>
- </head>
- <body>
- <h1>Filter 测试页面</h1>
- <!-- default -->
- {{ name }}
- <br>
- {{ name1|default:"这里不存在" }}
- <br>
- {{ age|default:"这里也不存在" }}
- <br>
- <!-- length -->
- {{ name|length }}
- <br>
- {{ hobby_list|length }}
- <br>
- {{ age|length }}
- </body>
- </html>
运行效果:
这里计算了 name 变量值、hobby_list 列表、age 空值的长度
slice:
slice 是用来进行切片的
views.py:
- from django.shortcuts import render, redirect, HttpResponse
- from app01 import models
- # Filter 测试
- def filter_test(request):
- name = "Jack"
- age = 18
- hobby = ["Reading", "Basketball", "Movie", "Music"]
- return render(
- request,
- "filter_test.html",
- {
- "name": name,
- "age": None,
- "hobby_list": hobby,
- })
filter_test.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Filter 测试</title>
- </head>
- <body>
- <h1>Filter 测试页面</h1>
- <!-- default -->
- {{ name }}
- <br>
- {{ name1|default:"这里不存在" }}
- <br>
- {{ age|default:"这里也不存在" }}
- <br>
- <!-- length -->
- {{ name|length }}
- <br>
- {{ hobby_list|length }}
- <br>
- {{ age|length }}
- <br>
- <!-- 切片 -->
- {{ hobby_list|slice:"0:2" }}
- <br>
- {{ name|slice:"0:2" }}
- </body>
- </html>
运行效果:
filesizeformat:
将一串数字格式化成文件格式
views.py:
- from django.shortcuts import render, redirect, HttpResponse
- from app01 import models
- # Filter 测试
- def filter_test(request):
- name = "Jack"
- age = 18
- file_size = 988222836293733
- hobby = ["Reading", "Basketball", "Movie", "Music"]
- return render(
- request,
- "filter_test.html",
- {
- "name": name,
- "age": None,
- "hobby_list": hobby,
- "filesize": file_size,
- })
filter_test.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Filter 测试</title>
- </head>
- <body>
- <h1>Filter 测试页面</h1>
- <!-- default -->
- {{ name }}
- <br>
- {{ name1|default:"这里不存在" }}
- <br>
- {{ age|default:"这里也不存在" }}
- <br>
- <!-- length -->
- {{ name|length }}
- <br>
- {{ hobby_list|length }}
- <br>
- {{ age|length }}
- <br>
- <!-- 切片 -->
- {{ hobby_list|slice:"0:2" }}
- <br>
- {{ name|slice:"0:2" }}
- <br>
- <!-- filesizeformat -->
- {{ filesize|filesizeformat }}
- </body>
- </html>
运行结果:
这里会根据大小格式化成 KB,MB,GB 和 TB
cut:
删除字符串或列表中和过滤器参数相同的内容
views.py:
- from django.shortcuts import render, redirect, HttpResponse
- from app01 import models
- # Filter 测试
- def filter_test(request):
- name = "Jack"
- age = 18
- file_size = 988222836293733
- hobby = ["Reading", "Basketball", "Movie", "Music"]
- return render(
- request,
- "filter_test.html",
- {
- "name": name,
- "age": None,
- "hobby_list": hobby,
- "filesize": file_size,
- })
filter_test.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Filter 测试</title>
- </head>
- <body>
- <h1>Filter 测试页面</h1>
- <!-- default -->
- {{ name }}
- <br>
- {{ name1|default:"这里不存在" }}
- <br>
- {{ age|default:"这里也不存在" }}
- <br>
- <!-- length -->
- {{ name|length }}
- <br>
- {{ hobby_list|length }}
- <br>
- {{ age|length }}
- <br>
- <!-- 切片 -->
- {{ hobby_list|slice:"0:2" }}
- <br>
- {{ name|slice:"0:2" }}
- <br>
- <!-- filesizeformat -->
- {{ filesize|filesizeformat }}
- <br>
- <!-- cut -->
- {{ name|cut:"ac" }}
- <br>
- {{ hobby_list|cut:"Movie" }}
- </body>
- </html>
运行结果:
Jack 被删除了 ac,hobby_list 列表被删除了 Movie
join:
连接字符串
views.py:
- from django.shortcuts import render, redirect, HttpResponse
- from app01 import models
- # Filter 测试
- def filter_test(request):
- name = "Jack"
- age = 18
- file_size = 988222836293733
- hobby = ["Reading", "Basketball", "Movie", "Music"]
- return render(
- request,
- "filter_test.html",
- {
- "name": name,
- "age": None,
- "hobby_list": hobby,
- "filesize": file_size,
- })
filter_test.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Filter 测试</title>
- </head>
- <body>
- <h1>Filter 测试页面</h1>
- <!-- default -->
- {{ name }}
- <br>
- {{ name1|default:"这里不存在" }}
- <br>
- {{ age|default:"这里也不存在" }}
- <br>
- <!-- length -->
- {{ name|length }}
- <br>
- {{ hobby_list|length }}
- <br>
- {{ age|length }}
- <br>
- <!-- 切片 -->
- {{ hobby_list|slice:"0:2" }}
- <br>
- {{ name|slice:"0:2" }}
- <br>
- <!-- filesizeformat -->
- {{ filesize|filesizeformat }}
- <br>
- <!-- cut -->
- {{ name|cut:"ac" }}
- <br>
- {{ hobby_list|cut:"Movie" }}
- <br>
- <!-- join -->
- {{ name|join:"+" }}
- <br>
- {{ hobby_list|join:"-" }}
- </body>
- </html>
运行结果:
safe:
Django 模板会自动对 html、js 标签进行转义,safe 可以让 Django 不对标签进行转义
views.py:
- from django.shortcuts import render, redirect, HttpResponse
- from app01 import models
- # Filter 测试
- def filter_test(request):
- name = "Jack"
- age = 18
- file_size = 988222836293733
- test_html = "<a href='www.baidu.com'>这是一个 html 标签</a>"
- hobby = ["Reading", "Basketball", "Movie", "Music"]
- return render(
- request,
- "filter_test.html",
- {
- "name": name,
- "age": None,
- "hobby_list": hobby,
- "filesize": file_size,
- "test_html": test_html,
- })
filter_test.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Filter 测试</title>
- </head>
- <body>
- <h1>Filter 测试页面</h1>
- <!-- default -->
- {{ name }}
- <br>
- {{ name1|default:"这里不存在" }}
- <br>
- {{ age|default:"这里也不存在" }}
- <br>
- <!-- length -->
- {{ name|length }}
- <br>
- {{ hobby_list|length }}
- <br>
- {{ age|length }}
- <br>
- <!-- 切片 -->
- {{ hobby_list|slice:"0:2" }}
- <br>
- {{ name|slice:"0:2" }}
- <br>
- <!-- filesizeformat -->
- {{ filesize|filesizeformat }}
- <br>
- <!-- cut -->
- {{ name|cut:"ac" }}
- <br>
- {{ hobby_list|cut:"Movie" }}
- <br>
- <!-- join -->
- {{ name|join:"+" }}
- <br>
- {{ hobby_list|join:"-" }}
- <br>
- <!-- safe -->
- {{ test_html }}
- <br>
- {{ test_html|safe }}
- </body>
- </html>
运行效果:
没加 safe 的话就被 Django 默认转义了,加了 safe,a 标签就没被转义
truncatechars:
通过参数指定截断字符数,将多于指定的字符数的字符串字符进行截断,被截断的内容用 “...” 来代替
views.py:
- from django.shortcuts import render, redirect, HttpResponse
- from app01 import models
- # Filter 测试
- def filter_test(request):
- name = "Jack"
- age = 18
- file_size = 988222836293733
- test_html = "<a href='www.baidu.com'>这是一个 html 标签</a>"
- hobby = ["Reading", "Basketball", "Movie", "Music"]
- text = "abcdefghijklmnopqrstuvwxyz"
- return render(
- request,
- "filter_test.html",
- {
- "name": name,
- "age": None,
- "hobby_list": hobby,
- "filesize": file_size,
- "test_html": test_html,
- "text": text,
- })
filter_test.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Filter 测试</title>
- </head>
- <body>
- <h1>Filter 测试页面</h1>
- <!-- default -->
- {{ name }}
- <br>
- {{ name1|default:"这里不存在" }}
- <br>
- {{ age|default:"这里也不存在" }}
- <br>
- <!-- length -->
- {{ name|length }}
- <br>
- {{ hobby_list|length }}
- <br>
- {{ age|length }}
- <br>
- <!-- 切片 -->
- {{ hobby_list|slice:"0:2" }}
- <br>
- {{ name|slice:"0:2" }}
- <br>
- <!-- filesizeformat -->
- {{ filesize|filesizeformat }}
- <br>
- <!-- cut -->
- {{ name|cut:"ac" }}
- <br>
- {{ hobby_list|cut:"Movie" }}
- <br>
- <!-- join -->
- {{ name|join:"+" }}
- <br>
- {{ hobby_list|join:"-" }}
- <br>
- <!-- safe -->
- {{ test_html }}
- <br>
- {{ test_html|safe }}
- <br>
- <!-- truncatechars -->
- {{ text|truncatechars:10 }}
- </body>
- </html>
运行结果:
date:
对时间进行格式化
views.py:
- from django.shortcuts import render, redirect, HttpResponse
- from app01 import models
- import datetime
- # Filter 测试
- def filter_test(request):
- name = "Jack"
- age = 18
- file_size = 988222836293733
- test_html = "<a href='www.baidu.com'>这是一个 html 标签</a>"
- hobby = ["Reading", "Basketball", "Movie", "Music"]
- text = "abcdefghijklmnopqrstuvwxyz"
- now_time = datetime.datetime.now()
- return render(
- request,
- "filter_test.html",
- {
- "name": name,
- "age": None,
- "hobby_list": hobby,
- "filesize": file_size,
- "test_html": test_html,
- "text": text,
- "now_time": now_time,
- })
filter_test.html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Filter 测试</title>
- </head>
- <body>
- <h1>Filter 测试页面</h1>
- <!-- default -->
- {{ name }}
- <br>
- {{ name1|default:"这里不存在" }}
- <br>
- {{ age|default:"这里也不存在" }}
- <br>
- <!-- length -->
- {{ name|length }}
- <br>
- {{ hobby_list|length }}
- <br>
- {{ age|length }}
- <br>
- <!-- 切片 -->
- {{ hobby_list|slice:"0:2" }}
- <br>
- {{ name|slice:"0:2" }}
- <br>
- <!-- filesizeformat -->
- {{ filesize|filesizeformat }}
- <br>
- <!-- cut -->
- {{ name|cut:"ac" }}
- <br>
- {{ hobby_list|cut:"Movie" }}
- <br>
- <!-- join -->
- {{ name|join:"+" }}
- <br>
- {{ hobby_list|join:"-" }}
- <br>
- <!-- safe -->
- {{ test_html }}
- <br>
- {{ test_html|safe }}
- <br>
- <!-- truncatechars -->
- {{ text|truncatechars:10 }}
- <br>
- <!-- 时间 -->
- {{ now_time|date:"Y-m-d H:i:s"}}
- </body>
- </html>
运行结果:
Python - Django - 模板语言之 Filters(过滤器)的更多相关文章
- Python - Django - 模板语言之自定义过滤器
自定义过滤器的文件: 在 app01 下新建一个 templatetags 的文件夹,然后创建 myfilter.py 文件 这个 templatetags 名字是固定的,myfilter 是自己起的 ...
- Python - Django - 模板语言之变量
前言: 在 Django 模板语言中变量用 {{ }},逻辑用 {% %} 在 urls.py 中添加对应关系 from django.conf.urls import url from django ...
- python django 模板语言循环字典
urls.py from django.conf.urls import url from django.contrib import admin from cmdb import views url ...
- Python - Django - 模板语言之 Tags(标签)
标签使用 {% %} 注释语句:{# #} for 循环: views.py: from django.shortcuts import render, redirect, HttpResponse ...
- 6月15日 python学习总结 Django模板语言相关内容
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
- Django模板语言,过滤器整理
Django模板语言,过滤器整理 1. add {{ value|add:"2" }} 把add后的参数加给value: 处理时,过滤器首先会强制把两个值转换成Int类型. 如果强 ...
- Django模板语言, 过滤器整理
Django模板语言,过滤器整理 1. add {{ value|add:"2" }} 把add后的参数加给value: 处理时,过滤器首先会强制把两个值转换成Int类型. 如果强 ...
- Django模板语言初识
一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...
- Django模板语言相关内容 Djan
Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...
随机推荐
- 如何识别和解决SQL Server中的热闩锁(PAGELATCH_EX)
描述 在SQL Server中,内部闩锁体系结构可在SQL操作期间保护内存.通过页面上的读写操作,可以确保内存结构的一致性.从根本上讲,它具有两个类:缓冲区锁存器和非缓冲区锁存器,它们在SQL Eng ...
- YAML_13 嵌套循环,循环添加多用户
with_nested ansible]# vim add1.yml --- - hosts: web2 remote_user: root vars: un: [a, b, c] ...
- 检测 nginx 关闭切换keepalived
检测nginx 端口启用 关闭 keepalived 检测 nginx 进程:然后关闭 keepalived ,关闭漂移IP : cat nginx_pid.sh #!/bin/bash whil ...
- codevs:1462 素数和:给定2个整数a,b 求出它们之间(不含a,b)所有质数的和。
#include<iostream>#include<cstdio>#include<cmath>using namespace std;int main(){ i ...
- 如何快速把ps序列图层建立帧动画?
工具ps 1.将序列帧图片载入ps 新建->脚本->将文件载入堆栈 2.制作序列帧动画 窗口->时间轴->时间轴面板右上角菜单->从图层建立帧 3.去除多余的透明画布 全 ...
- Mac zsh 所有命令失效
正在配置一些东西,然后zsh的所有命令不能用了. 我艹...... 然后一顿猛查,发现有个命令好使,记录一下 在命令行只想输入下面命令 PATH=/bin:/usr/bin:/usr/local/bi ...
- opendir,readdir,closedir
结构体dirent: struct dirent { ino_t d_ino; //inode number off_t d_off; //offset to the next diret unsi ...
- 如何查询数据库中所有表格,或者查询是否存在某个表格-mysql和oracle
这个问题,在之前就有写过,但是想找到语句还是记不得,这里主要提及我自己有用到的数据库mysql和oracle 1.mysql 这个是自己安装的,所有配置都是默认配置没有改变,所以保存表名的表还是inf ...
- linux管道pipe详解
linux管道pipe详解 https://blog.csdn.net/qq_42914528/article/details/82023408
- 如何在wcf中用net tcp协议进行通讯
快速阅读 如何在wcf中用net tcp协议进行通讯,一个打开Wcf的公共类.比较好好,可以记下来. 配置文件中注意配置 Service,binding,behaviors. Service中配置en ...