模板

作为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中的模板的标签、变量、过滤器和注释)相关推荐

  1. Django框架(8.Django中的模板文件的使用和模板变量的简单使用)

    为什么使用模板 通过视图可以给用户返回一些字符串等等, 那如何向请求者返回一个漂亮的页面呢? 肯定需要用到html.css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为 ...

  2. Django框架(19.Django中获取url的参数(位置参数以及关键字参数))

    捕获url参数 进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数. 位置参数 位置参数,参数名可以随意指定   ...

  3. Django框架基础知识05-自定义模板标签与过滤器

    根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则 目前最最重要的就是HOW 一 文件路径配置: templates 存放自定义 ...

  4. 框架生成的HTML修改,Django框架form表单验证 修改html标签的样式

    经过前面的学习,我们大致可以知道CharField.EmailField等等以Field结尾的方法,只能帮助我们对用户发来的信息做验证,不能生成html标签.字段本身自己虽然只做验证,但是我们可以通过 ...

  5. Django框架(6.django后台管理/通过后台对数据表的增删改)

    1.django项目中的admin.py  即:  后台管理相关文件 使用Django提供的相关管理机制的步骤 1.本地化 语言和时区的本地化    ( 修改项目中的settings.py的文件) 2 ...

  6. Django框架(1.Django框架的简介)

    Django简介 Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计. 劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005 ...

  7. Django框架(24.Django中的模板的自定义过滤器)

    自定义过滤器 过滤器就是python中的函数,注册后就可以在模板中当作过滤器使用 Django中的使用模板的自定义过滤器 在项目的应用下创建templatetags​​​​​​的Python的包 然后 ...

  8. Django框架(25.Django中的模板继承以及HTML转义)

    模板继承 模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量. 典型应用:网站的头部.尾部信息. 父模板 如果发现在多个模板中某些内容相同,那就应该把这段内容定义到父模板中. ...

  9. Django框架(9.Django中的配置使用MySQL数据库以及页面重定向)

    ORM框架简介 ORM框架还可以通过方便的配置就可以进行数据库的切换 进入虚拟环境,创建一个新的项目,django-admin  startproject test2  (test2为项目名) 创建好 ...

最新文章

  1. java enum.isdefined_Enum.IsDefined 方法 (System) | Microsoft Docs
  2. JSFL元件类型判断 转载于 https://blog.csdn.net/linking530/article/details/8364600
  3. FaceNet: A Unified Embedding for Face Recognition and Clustering
  4. 工业富联:左手工业AI,右手“雾小脑”
  5. POJ 2186 Popular Cows
  6. poj1548 Robots
  7. blob html 预览_本地图片预览+blob使用
  8. 关于汽车领域的知识图谱实战入门
  9. 最小生成树算法(两个方法实现)
  10. webpack打包问题
  11. Java集合系列---HashMap源码解析(超详细)
  12. ELK 6下日志平台监控Nginx日志构建实践
  13. prolog初学语法结构
  14. 2月7日 SVM线性回归逻辑回归
  15. 目前计算机硬件安全,计算机硬件与网络安全
  16. 2022年前端技术发展趋势
  17. 如何批量重命名,文件批量重命名方法介绍
  18. 沉痛悼念旷视首席科学家、旷视研究院院长孙剑博士,享年 45 岁
  19. 火鸟门户v4.0 2019全能地方门户系统源码
  20. C语言学生成绩管理系统详解

热门文章

  1. php中round函数能给整数用吗,PHP四舍五入、取整、round函数使用
  2. java基本类_Java基本类型
  3. 十大经典排序算法之插入排序及其二分优化
  4. Vuex——命名空间导致错误[unknown action type:XXX]解决方案
  5. JAVA——赫夫曼编码-译码器(Huffman Coding)
  6. JavaScript——分时问候
  7. spring整合dubbo服务消费和发现入门示例
  8. 用Socket 打造跨语言跨操作系统的网络MORPG游戏(三)
  9. 操作系统 课堂练习题02【8道 经典题目】
  10. Android 视频播放器 VideoView 的使用,播放本地视频 和 网络 视频