通过管道符 "|" 来使用过滤器,{{ 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(过滤器)的更多相关文章

  1. Python - Django - 模板语言之自定义过滤器

    自定义过滤器的文件: 在 app01 下新建一个 templatetags 的文件夹,然后创建 myfilter.py 文件 这个 templatetags 名字是固定的,myfilter 是自己起的 ...

  2. Python - Django - 模板语言之变量

    前言: 在 Django 模板语言中变量用 {{ }},逻辑用 {% %} 在 urls.py 中添加对应关系 from django.conf.urls import url from django ...

  3. python django 模板语言循环字典

    urls.py from django.conf.urls import url from django.contrib import admin from cmdb import views url ...

  4. Python - Django - 模板语言之 Tags(标签)

    标签使用 {% %} 注释语句:{# #} for 循环: views.py: from django.shortcuts import render, redirect, HttpResponse ...

  5. 6月15日 python学习总结 Django模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  6. Django模板语言,过滤器整理

    Django模板语言,过滤器整理 1. add {{ value|add:"2" }} 把add后的参数加给value: 处理时,过滤器首先会强制把两个值转换成Int类型. 如果强 ...

  7. Django模板语言, 过滤器整理

    Django模板语言,过滤器整理 1. add {{ value|add:"2" }} 把add后的参数加给value: 处理时,过滤器首先会强制把两个值转换成Int类型. 如果强 ...

  8. Django模板语言初识

    一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...

  9. Django模板语言相关内容 Djan

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

随机推荐

  1. c语言中字符串转数字的函数

    ANSI C 规范定义了 atof().atoi().atol().strtod().strtol().strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习.另外在 C99 / C ...

  2. Django REST framework认证权限和限制 源码分析

    1.首先 我们进入这个initial()里面看下他内部是怎么实现的. 2.我们进入里面看到他实现了3个方法,一个认证,权限频率 3.我们首先看下认证组件发生了什么 权限: 啥都没返回,self.per ...

  3. easyui-datagrid统计

    <script> //打印指定的table function dayin() { var tableToPrint = document.getElementById("dg&q ...

  4. ElasticSearch使用C#操作文档

    一.ElasticSearch的.net客户端驱动程序 ElasticSearch官方网站提供了两个.net客户端驱动程序,其中Elasticsearch.Net是一个非常底层且灵活的客户端驱动程序, ...

  5. mysql 5.7 增删改查及别名的用法

    1.启动和停止服务 一)启动和停止 #启动服务: $sudo service mysql start #停止服务: $sudo service mysql stop 二)创建和选择数据库 [创建数据库 ...

  6. undefined null 与 字符串相加

        在进行一个字符串的判断的时候. 如下一段内容 const queryObj = {}; const  str = queryObj.criteriaStr + "" con ...

  7. golang 无缓冲channel

    golang 无缓冲channel package main import "fmt" func main() { // 1S =1000ms //1ms = 1000us //1 ...

  8. nvarchar(MAX) 、ntext的差别

    今天在做一个项目时,程序成功向数据库插入一条数据, 插入的是一篇比较大的文章,而且还有很多样式. Id是int型,Content用的是 ntext类型的 但是当我在手动改数据库Id时出现错误: 错误源 ...

  9. python find和index的区别

    如果找不到目标元素,index会报错,find会返回-1 >>> s="hello world" >>> s.find("llo&qu ...

  10. Java 获取客户端真实IP地址

    本文基于方法 HttpServletRequest.getHeader 和 HttpServletRequest.getRemoteAddr 介绍如何在服务器端获取客户端真实IP地址. 业务背景 服务 ...