Django框架(23.Django中的模板的标签、变量、过滤器和注释)
模板
作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器。模版致力于表达外观,而不是程序逻辑。模板的设计实现了业务逻辑view与显示内容template的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用。
模板包含两部分:
- 静态部分,包含html、css、js。
- 动态部分,就是模板语言。
Django模板语言,简写DTL,定义在django.template包中。
配置模板文件夹
创建项目后,在"项目名称/settings.py"文件中定义了关于模板的配置。
DIRS定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板文件,通常是在项目的根目录下创建templates目录。
Django处理模板分为两个阶段:
- 1.加载:根据给定的路径找到模板文件,编译后放在内存中。
- 2.渲染:使用上下文数据对模板插值并返回生成的字符串。
为了减少开发人员重复编写加载、渲染的代码,Django提供了简写函数render,用于调用模板。
模板语言
模板语言包括4种类型,分别是:
- 变量
- 标签
- 过滤器
- 注释
模板变量
模板变量的作用是计算并输出,变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。
语法如下:
{{变量}}
例如,当 book为后端传过来的值时 , 模版引擎遇到 点 如book.title,会按照下列顺序解析:
- 1.字典book['title']
- 2.先属性后方法,将book当作对象,查找属性title,如果没有再查找方法title()
- 3.如果是格式为book.0 则解析为 列表book[0]
如果变量不存在则插入空字符串''。
在模板中调用方法时不能传递参数。
模板标签
语法如下:
{%代码段%}
for标签语法如下:
{%for item in 列表%} 循环逻辑 {{forloop.counter}}表示当前是第几次循环,从1开始 {%empty%} 列表为空或不存在时执行此逻辑 {%endfor%}
if标签语法如下:
{%if ...%} 逻辑1 {%elif ...%} 逻辑2 {%else%} 逻辑3 {%endif%}
比较运算符如下:
注意:运算符左右两侧不能紧挨变量或常量,必须有空格。
== != < > <= >=
布尔运算符如下:
and or not
点击查看了解更多标签https://docs.djangoproject.com/zh-hans/2.1/ref/templates/builtins/
模板过滤器
语法如下:
- 使用管道符号 | 来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。
- 如果过滤器需要参数,则使用冒号 : 传递参数。
变量|过滤器:参数
长度length,返回字符串包含字符的个数,或列表、元组、字典的元素个数。
data|length
默认值default,如果变量不存在时则返回默认值。
data|default:'默认值'
日期date,用于对日期类型的值进行字符串格式化,常用的格式化字符如下:
- Y表示年,格式为4位,y表示两位的年。
- m表示月,格式为01,02,12等。
- d表示日, 格式为01,02等。
- j表示日,格式为1,2等。
- H表示时,24进制,h表示12进制的时。
- i表示分,为0-59。
- s表示秒,为0-59。
value|date:"Y年m月j日 H时i分s秒"
点击查看了解更多标签https://docs.djangoproject.com/zh-hans/2.1/ref/templates/builtins/
模板注释
在模板中使用如下模板注释,这段代码不会被编译,不会输出到客户端;html注释只能注释html内容,不能注释模板语言。
1)单行注释语法如下:
{#...#}
注释可以包含任何模版代码,有效的或者无效的都可以。
{# { % if foo % }bar{ % else % } #}
2)多行注释使用comment标签,语法如下:
{%comment%} ... {%endcomment%}
Django框架(23.Django中的模板的标签、变量、过滤器和注释)相关推荐
- Django框架(8.Django中的模板文件的使用和模板变量的简单使用)
为什么使用模板 通过视图可以给用户返回一些字符串等等, 那如何向请求者返回一个漂亮的页面呢? 肯定需要用到html.css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为 ...
- Django框架(19.Django中获取url的参数(位置参数以及关键字参数))
捕获url参数 进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数. 位置参数 位置参数,参数名可以随意指定 ...
- Django框架基础知识05-自定义模板标签与过滤器
根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则 目前最最重要的就是HOW 一 文件路径配置: templates 存放自定义 ...
- 框架生成的HTML修改,Django框架form表单验证 修改html标签的样式
经过前面的学习,我们大致可以知道CharField.EmailField等等以Field结尾的方法,只能帮助我们对用户发来的信息做验证,不能生成html标签.字段本身自己虽然只做验证,但是我们可以通过 ...
- Django框架(6.django后台管理/通过后台对数据表的增删改)
1.django项目中的admin.py 即: 后台管理相关文件 使用Django提供的相关管理机制的步骤 1.本地化 语言和时区的本地化 ( 修改项目中的settings.py的文件) 2 ...
- Django框架(1.Django框架的简介)
Django简介 Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计. 劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005 ...
- Django框架(24.Django中的模板的自定义过滤器)
自定义过滤器 过滤器就是python中的函数,注册后就可以在模板中当作过滤器使用 Django中的使用模板的自定义过滤器 在项目的应用下创建templatetags的Python的包 然后 ...
- Django框架(25.Django中的模板继承以及HTML转义)
模板继承 模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量. 典型应用:网站的头部.尾部信息. 父模板 如果发现在多个模板中某些内容相同,那就应该把这段内容定义到父模板中. ...
- Django框架(9.Django中的配置使用MySQL数据库以及页面重定向)
ORM框架简介 ORM框架还可以通过方便的配置就可以进行数据库的切换 进入虚拟环境,创建一个新的项目,django-admin startproject test2 (test2为项目名) 创建好 ...
最新文章
- java enum.isdefined_Enum.IsDefined 方法 (System) | Microsoft Docs
- JSFL元件类型判断 转载于 https://blog.csdn.net/linking530/article/details/8364600
- FaceNet: A Unified Embedding for Face Recognition and Clustering
- 工业富联:左手工业AI,右手“雾小脑”
- POJ 2186 Popular Cows
- poj1548 Robots
- blob html 预览_本地图片预览+blob使用
- 关于汽车领域的知识图谱实战入门
- 最小生成树算法(两个方法实现)
- webpack打包问题
- Java集合系列---HashMap源码解析(超详细)
- ELK 6下日志平台监控Nginx日志构建实践
- prolog初学语法结构
- 2月7日 SVM线性回归逻辑回归
- 目前计算机硬件安全,计算机硬件与网络安全
- 2022年前端技术发展趋势
- 如何批量重命名,文件批量重命名方法介绍
- 沉痛悼念旷视首席科学家、旷视研究院院长孙剑博士,享年 45 岁
- 火鸟门户v4.0 2019全能地方门户系统源码
- C语言学生成绩管理系统详解
热门文章
- php中round函数能给整数用吗,PHP四舍五入、取整、round函数使用
- java基本类_Java基本类型
- 十大经典排序算法之插入排序及其二分优化
- Vuex——命名空间导致错误[unknown action type:XXX]解决方案
- JAVA——赫夫曼编码-译码器(Huffman Coding)
- JavaScript——分时问候
- spring整合dubbo服务消费和发现入门示例
- 用Socket 打造跨语言跨操作系统的网络MORPG游戏(三)
- 操作系统 课堂练习题02【8道 经典题目】
- Android 视频播放器 VideoView 的使用,播放本地视频 和 网络 视频