通过管道符 "|" 来使用过滤器,{{ 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. Django自定义filter

  2. python - django (ORM常用字段)

    # """ python manage.py makemigrations # 更新操作 python manage.py migrate # 转换sql语句到数据库 1 ...

  3. SpringBoot官方文档学习(一)SpringApplication

    Springboot通过main方法启动,在许多情况下,委派给静态SpringApplication.run方法: public static void main(String[] args) { S ...

  4. C# 打开 EXE 文件

    命名空间是using System.Diagnostics; 在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法.在C#中,通过Process类来进行进程操作. Proc ...

  5. Oracle instr() 字符查找函数

    instr()函数的格式  (俗称:字符查找函数) 格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串) 格式二:instr( string1 ...

  6. include和taglib指令

    1.include指令用来包含另一个静态文件,这个静态文件可以是一个JSP页面.一个Servlet.文本文件.JSP代码. include.jsp <%@ page contentType=&q ...

  7. Cogs 763. [USACO Open09] 数字的游戏(博弈)

    [USACO Open09] 数字的游戏 ★☆ 输入文件:cdgame.in 输出文件:cdgame.out 简单对比 时间限制:1 s 内存限制:128 MB Bessie正跟FJ玩一个数字游戏,她 ...

  8. 记录一个webstorm的设置或者说小技巧

    在 html 的元素中,如果输入属性,默认会填充 引号,在 react 书写中非常不方便. 其中的JSX很多时候是不需要 quotation 的,只是需要一个 括号 {} 即可. 自己找了下webst ...

  9. Android Studio 和 SDK 下载、安装和环境变量配置

    转Android Studio 和 SDK 下载.安装和环境变量配置https://blog.csdn.net/hahahhahahahha123456/article/details/8065135 ...

  10. 判断qq浏览器和uc浏览器?

    判断在iphone手机上打开的是uc浏览器还是qq浏览器 <html lang="en"> <head> <meta charset="ut ...