Django模板引擎
Django作为Web框架,需要一种很便利的方法动态地生成 HTML 网页,因此有了模板这个概念。模板包含所需 HTML 的部分代码以及一些特殊语法,特殊语法用于描述如何将视图传递的数据动态插入HTML网页中。
Django模板引擎
Django 内置的模板引擎包含模板上下文(亦可称为模板变量)、标签 和 过滤器,各个功能说明如下:
- 模板上下文是以变量的形式写人模板文件里画,变量值由视图函数或视图类传递所得。
- 标签是对模板上下文进行控制输出,比如模板上下文的判断和循环控制等。
- 模板继承隶属于标签,它是将每个模板文件重复的代码抽取出来并写在一个共用的模板文件中,其他模板文件通过继承共用模板文件来实现完整的网页输出。
- 过滤器是对模板上下文进行操作处理,比如模板上下文的内容截取、替换或格式转换等。
1、模板上下文
模板上下文是模板中基本组成单位,上下文的数据由视图函数或视图类传递。它以 {{ variable }} 表示,variable 是上下文的名称,它支持 Python 所有的数据类型,如字典、列表、元组、字符串、整形或实例化对象等。上下文的数据格式不同,在模板里的使用方式也有所差异,如下所示:
# 假如 variable1 = '字符串或整型'
<div>{{ variable1 }}</div>
# 输出 “<div>字符串或整型</div>” # 假如 variable2 = {'name': '字典或实例化对象'}
<div>{{ variable2.name }}</div>
# 输出 “<div>字典或实例化对象</div>” # 假如 variable3 = ['元组或列表']
<div>{{ variable3.0 }}</div>
# 输出 “<div>元组或列表</div>”
2、 Django常用内置标签
标签是对模板上下文进行控制输出,它是以 {% tag %} 表示的,其中tag是标签的名称,Diango内置了许多模板标签,比如 { % if % }(判断标签)、{ % for % }(循环标签)或{ % url % }(路由标签)等。
内置的模板标签可以在 Django 源码(\django\template\defaulttags.py)里找到定义过程,每个内置标签都有功能注释和使用方法,这里本人只列举常用的内置标签,如下表所示:
| 标签 | 描述 |
| { % for % } | 遍历输出上下文的内容 |
| { % if % } | 对上下文进行条件判断 |
| { % csrf_token % } | 生成csrf token的标签,用于防护跨站请求伪造攻击 |
| { % url % } | 引用路由配置的地址,生成相应的路由地址 |
| { % with % } | 将上下文名重新命名 |
| { % load % } | 加载导入Django的标签库 |
| { % static % } | 读取静态资源的文件内容 |
| { % extends xxx % } | 模板继承,xxx为模板文件名,使当前模板继承xxx模板 |
| { % block xxx % } | 重写父类模板的代码 |
3、Django过滤器
过滤器主要是对上下文的内容进行操作处理,如替换、反序和转义等。通过过滤器处理上下文可以将其数据格式或内容转化为我们想要的显示效果,而且相应减少视图的代码量。过滤器的使用方法如下:
{{ variable | filter }}
若上下文设有过滤器,则模板引擎在解析上下文时,首先由过滤器 filter 处理上下文 variable,然后将处理后的结果进行解析并显示在网页上。variable 代表模板上下文,管道符号 "|" 代表当前上下文使用过滤器,filter 代表某个过滤器。单个上下文可以支持多个过滤器同时使用,例如:
{{ variable | filter | lower }}
在使用的过程中,有些过滤器还可以传入参数,但仅支持传入一个参数,带参数的过滤器与参数之间使用冒号隔开,并且两者之间不能留有空格,例如:
{{ variable | date:"D d M Y" }}
Django的内置过滤器可以在源码(\django\template\defaultfilters.py)里找到具体的定义过程,这里本人就不在一一列举。
希望以上内容可以帮助到各位。
Django模板引擎的更多相关文章
- Django模板引擎的研究
Django模板引擎的研究 原创博文,转载请注明出处. 以前曾遇到过错误Reverse for ‘*’ with arguments '()' and keyword arguments' not f ...
- 关于Django模板引擎的研究
原创博文,转载请注明出处. 以前曾遇到过错误Reverse for ‘*’ with arguments '()' and keyword arguments' not found.1其原因是没有给视 ...
- django模板引擎自定义变量
定义临时变量: {% with i=1 %} {{i}} {% endwith %} 定义对临时变量操作的tag 在templatetags中创建set_val.py 内容是 from django ...
- django模板语法之include
假如我们有以下模板index.html,代码为: <!DOCTYPE html> <html lang="en"> <head> <met ...
- Django 2.0 学习(13):Django模板继承和静态文件
Django模板继承和静态文件 模板继承(extend) Django模板引擎中最强大也是最复杂的部分就是模板继承了,模板继承可以让我们创建一个基本的"骨架"模板,它可以包含网页中 ...
- Django模板简介
在settings.py中有个TEMPLATES的设置,其中BACKEND用来配置Django模板引擎, DIRS 定义了一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件 一般我们都会把模 ...
- djando模板----第一django模板应用
Django模板 我们已经知道,模板函数的函数的返回值就是返回给客户端的数据,但如果返回数据很复杂,如果一个非常大的html页面,直接将页面代码固化在python脚本文件中是不合适的,当然 也可以将h ...
- Django模板自定义标签和过滤器,模板继承(extend),Django的模型层
上回精彩回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...
- Django基础,Day10 - template 模板引擎与路径设置
作为一个Web框架,Django需要一个方便的方式来生成动态的HTML.最常见的方法依赖于模板.模板包含所需的HTML输出的静态部分以及一些特殊的语法描述如何插入动态内容. Django框架后端默认支 ...
随机推荐
- 腾讯云Centos7.6开放端口及配置腾讯云安全组
1:防火墙的开启.关闭.状态查询.设置开机自启.开机禁用命令 检查状态(1):firewall-cmd --state 检查状态(2):systemctl status firewalld.servi ...
- vmware-install.pl 如何安装?
首先在虚拟机上安装vnware-tools工具,如图(工具为vmware workstation): 成功 但是系统屏幕大小并没有适应虚拟机,所以下边这行提示很重要. 打开左侧边栏的VMware ...
- 更新啦!第 59 期《HelloGitHub》开源月刊
兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源项目. 这是一个面向编程新手.热爱编程.对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编 ...
- 剑指 Offer 19. 正则表达式匹配 + 动态规划
剑指 Offer 19. 正则表达式匹配 题目链接 一. 字符串匹配大致可以分为三种情况: 第一种:正则串的最后一个字符为正常字符,此时根据主串的最后一个字符是否和它相同来判断是否匹配, 如果相同,则 ...
- 那些你不知道的DOU+投放技巧,以及常见的审核失败原因丨国仁网络
作为小额付费投放工具,DOU+一直深受各大中小商家的青睐.虽然它的审核比较严格,但转化效果还是非常明显的. 近日,抖音发布重要公告:内容低质的视频将无法购买DOU+推广,并可能因违反平台规则导致无法观 ...
- Boltdb学习笔记之〇--概述
更多精彩内容,请关注微信公众号:后端技术小屋 看了boltdb也有一阵子了,看完之后总想写点什么,因为感觉到这可能是个不小的坑,所以迟迟没有动笔(没错我的拖延症又犯了..).最近有一种流行的说法:如果 ...
- 追洞小组 | fastjson1.2.24复现+分析
出品|MS08067实验室(www.ms08067.com) 本文作者:爱吃芝士的小葵(Ms08067实验室追洞小组成员) 1.靶场搭建 2.漏洞复现 3.漏洞分析 4.漏洞修复 5.心得 靶场搭建 ...
- WPF 基础 - DataTemplate
如果把控件的功能视为内容,则可以使用控件模板 ControlTemplate 来控制它的展现: 如果把数据视为内容,则可以使用数据模板 DataTemplate 把数据展示出来: ControlTem ...
- POJ_2253 Frogger 【最短路变形】
一.题目 Frogger 二.分析 题意关键点就是那个青蛙距离.就是所有1到2的点的路径中,每条路径都可以确定一个最大值,这个最大值就是青蛙要跳的青蛙距离,然后要求这个青蛙距离最小值. 其实就是最短路 ...
- 十分钟学会Scratch图形化编程
一.概要 Scratch是麻省理工学院开发的供儿童或者初学者学习编程的开发平台.其通过点击并拖拽的方式,完成编程,可以使儿童或者成人编程初学者学习编程基础概念等.Scratch是一款积木式图形编程软件 ...