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

目录
相关文章
|
3月前
|
SQL 前端开发 JavaScript
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
34 0
|
5月前
|
索引 Python
19 Django模板 - 定义模板
19 Django模板 - 定义模板
17 0
|
5月前
|
Python
18 Django模板 - 介绍
18 Django模板 - 介绍
26 0
|
7月前
|
Python
Django模板加载与响应2
Django模板加载与响应2
39 0
|
8天前
|
开发者 Python
Django模板系统的强大之处:动态渲染与扩展性
【4月更文挑战第15天】Django模板系统是Web开发中的强大工具,支持动态渲染和扩展性。动态渲染包括变量、标签和过滤器的使用,实现内容根据上下文数据动态生成。模板继承和自定义标签则提升了扩展性,减少代码重复,增强可维护性。通过这些特性,Django模板系统助力开发者构建高效、动态的Web应用。
|
3月前
|
前端开发 JavaScript Python
Django 模板中使用 Ajax POST
Django 模板中使用 Ajax POST
17 0
|
4月前
|
前端开发 JavaScript 数据库
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
37 0
|
5月前
|
Ubuntu Python
23 Django模板 - 验证码案例
23 Django模板 - 验证码案例
31 0
|
5月前
|
安全 JavaScript 前端开发
22 Django模板 - csrf
22 Django模板 - csrf
26 0
|
5月前
|
JavaScript Python
21 Django模板 - HTML转义
21 Django模板 - HTML转义
43 0