Django(2)模板、标签(二)

简介: Django(2)模板、标签(二)

- 过滤器


  • 模板语法:


{{ 变量名 | 过滤器:可选参数 }}


  • 模板过滤器可以在变量被显示前修改它,过滤器使用管道字符:


{{ name | lower }}    #文档大写文本会转换成小写
  • 过滤管道可以被套接,也就是说一个过滤器的输出可以作为下一个过滤器的输入,与linux的管道符是一样的


{{ my_list | first | upper  }}   #取出第一个值并转换成大写


  • 有些过滤器有参数,过滤器的参数跟随冒号:之后并且总是以双引号""包含
{{ bio | truncatewords:"30" }}   #显示bio变量的前30个词


  • 其他过滤器


  • addslashes:添加反斜杠到任何反斜杠、单引号或者双引号前面
  • date:按照指定的格式字符串参数格式化date或者datetime对象


{{ pub_date | date:"F J, Y"}}


  • length:返回变量的长度


1、default


  • default为变量提供一个默认值,如果视图传输的变量的布尔值是False,那么就会使用指定的默认值,以下的值的布尔值都是False
0  
0.0  
False  
0j  
""  
[] 
()  
set()  
{}  
None


下面来看案例:


  • 修改index_test.py视图文件:
# -*- coding: utf-8 -*-
from django.shortcuts import render
def Hello(request):
    test_view = {"name":"zhangsan","time":0}
    return render(request,'test.html',{"test":test_view})

修改test.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
    <p>{{ test }}</p>
    <h1>{{ test.time | default:"测试!!" }}</h1>  #变量的布尔值为False则变量值为 测试!!
</body>
</html>
  • 访问页面

a814114e11b840a1b883bae4e263b0a2.png

2、length


  • length可以返回对象的长度,一般适用于字符串和列表,字典返回的是键值对的数量,集合返回的是去重后的长度


  • 下面来看案例:


  • 修改index_test.py视图文件


#-*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
    test_view = "测试"
    return render(request,"test.html",{"test":test_view})

修改test.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
    <p>{{ test | length }}</p>
</body>
</html>
  • 访问页面



90c248a3d1de4f27b3e9951c35c453d4.png

3、filesizeformat


  • filesizeformat会以更人性化的方式显示文件的大小,其实就是加上单位,如KB、MB等


  • 字典返回的是键值对的数量,集合返回的是去重后的长度,下面来看案例:


  • 修改index_test.py视图文件
#-*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
    test_view = 10240
    return render(request,"test.html",{"test":test_view})
  • 修改test.py文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
    <p>{{ test | filesizeformat }}</p>
</body>
</html>


  • 访问页面


b2dacce31c2a44eb804e378ddea0a168.png

4、date


  • date会根据指定格式对一个日期变量进行格式化,格式Y-m-d H:i:s返回年-月-日 时:分:秒的格式时间


  • 下面来看案例:


  • 修改index_test.py视图文件
#-*- coding: utf-8 -*-
from django.shortcuts import render
import datetime
def hello(request):
    test_view = datetime.datetime.now()
    return render(request,"test.html",{"test":test_view})


  • 修改test.py文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
    <p>{{ test | date:"Y-m-d H:i" }}</p>
</body>
</html>
  • 访问页面

bbd15697d09e432bb68d5ec40dd66add.png


5、truncatechars


  • truncatechars可以截断字符串,如果字符串包含的字符总数多于指定的字符数量,那么多出的部分会被截断,只剩余指定数量的字符


  • 下面来看案例:


  • 修改index_test.py视图文件
#-*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
    test_view = "测试!!案例??"
    return render(request,"test.html",{"test":test_view})
  • 修改test.py文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
    <p>{{ test | truncatechars:4 }}</p>
</body>
</html>

访问页面

3c880c8fb8094d9d81b17180d3c7c5ce.png




6、safe


Django 会自动对视图文件传到HTML文件中的标签语法进行转义,令其语义失效。而加 safe 过滤器是告诉 Django 该数据是安全的,不必对其进行转义,可以让该数据语义生效。


safe会将字符串标记为安全,不需要转移,但是需要保证视图文件传过来的数据是绝对安全,才能使用safe


safe和后端视图文件的mark_safe效果相同


下面来看案例


修改index_test.py视图文件


#-*- coding: utf-8 -*-
from django.shortcuts import render
def hello(request):
    test_view = "<a href='https://www.baidu.com/'>点击跳转</a>"
    return render(request,"test.html",{"test":test_view})
  • 修改test.py文件,先看不加safe的
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
    <p>{{ test }}</p>
</body>
</html>
  • 访问


da729928bd904f6f91f0edac35716ebb.png

现在加上safe


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
    <p>{{ test | safe }}</p>
</body>
</html>


  • 访问页面,可以进行跳转


38e8381bd11e4e21a268b7c436d85672.png

55dabb674a2b440e804ef86577717760.png

目录
相关文章
|
7月前
|
SQL 前端开发 JavaScript
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
66 0
|
3月前
|
Java C++ Python
django 模板 过滤器
django 模板 过滤器
|
4月前
|
前端开发 JavaScript 数据库
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
|
4月前
|
JSON 数据处理 API
Django后端架构开发:视图与模板的正确使用
Django后端架构开发:视图与模板的正确使用
37 1
|
4月前
|
前端开发 Python
Django模板
【8月更文挑战第19天】
32 3
|
4月前
|
自然语言处理 前端开发 数据处理
Django的模板系统
【8月更文挑战第13天】
31 2
|
4月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
136 0
|
4月前
|
前端开发 数据处理 开发者
解锁Django模板系统终极奥义!揭秘高效前端渲染秘籍,让你的网站秒变炫酷黑科技!
【8月更文挑战第31天】Django作为Python的高级Web框架,内置的模板系统支持动态HTML渲染。本文通过在线书店案例,详细介绍Django模板系统的设置与高效渲染技巧,包括创建模板文件、编写视图函数及URL配置。通过合理使用过滤器、深度查询和模板继承等技巧,提升前端渲染效率和安全性,优化Web应用开发流程。
27 0
|
4月前
|
安全 JavaScript 前端开发
Django入门到放弃之模板及标签
Django入门到放弃之模板及标签
|
6月前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用合集之基于django应用模板创建的FC,如何配置数据库
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。