html语言可以写模版继承吗,Django框架(十一):模板介绍、模板语言、模板继承、HTML转义...

1. 模板介绍

1.1 模板的功能

产生html,控制页面上展示的内容。模板文件不仅仅是一个html文件。

模板文件包含两部分内容:

静态内容:css、js、html。

动态内容:用于动态去产生一些页面内容。通过模板语言来产生。

1.2 模板文件的使用

通常是在视图函数中使用模板产生html内容返回给客户端。

加载模板文件loader.get_template,获取模板文件的内容,产生一个模板对象。

定义模板上下文RequeseContext,给模板文件传递数据。

模板渲染产生html页面内容render,用传递的数据替换相应的变量,产生一个替换后的标准的html内容。

1.3 模板文件加载顺序

首先去配置的模板目录下面去找模板文件。

去INSTALLED_APPS下面的每个应用的templates去找模板文件,前提是应用中必须有templates文件夹。

2. 模板语言

2.1 变量

模板变量的作用是计算并输出,变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。

语法如下:

{{变量}}

当模版引擎遇到点如book.title,会按照下列顺序解析:

1.字典book['title']

2.先属性后方法,将book当作对象,查找属性title,如果没有再查找方法title()

3.如果是格式为book.0则解析为列表book[0]

如果变量不存在则插入空字符串''。

在模板中调用方法时不能传递参数。

例如:

{{book.btitile}}

首先把book当成一个字典,把btitle当成键名,进行取值book['btitle']。

把book当成一个对象,把btitle当成属性,进行取值book.btitle。

把book当成一个对象,把btitle当成对象的方法,进行取值book.btitle。

例如:

{{book.0}}

首先把book当成一个字典,把0当成键名,进行取值book[0]。

把book当成一个列表,把0当成下标,进行取值book[0]。

如果解析失败,则产出内容时用空字符串填充模板变量。

使用模板变量时,前面的困难是一个字典,可能是一个对象,还可能是一个列表。

2.2 标签

语法如下:

{%代码段%}

for标签语法如下:

{%for item in 列表%}

循环逻辑

{{forloop.counter}}表示当前是第几次循环,从1开始

{%empty%}

列表为空或不存在时执行此逻辑

{%endfor%}

if标签语法如下:

{%if ...%}

逻辑1

{%elif ...%}

逻辑2

{%else%}

逻辑3

{%endif%}

比较运算符如下:

运算符左右两端不能紧挨变量或常量,必须有空格。

==

!=

<

>

<=

>=

布尔运算符如下:

and

or

not

2.3 过滤器

语法如下:

使用管道符号|来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。

如果过滤器需要参数,则使用冒号:传递参数。

变量|过滤器:参数

长度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秒"

2.4 注释

在模板中使用如下模板注释,这段代码不会被编译,不会输出到客户端; html注释只能注释html内容,不能注释模板语言。

单行注释语法如下:

{#...#}

注释可以包含任何模版代码,有效的或者无效的都可以。

{#{ % if foo % }bar{ % else % } #}

多行注释使用comment标签,语法如下:

{%comment%}

...

{%endcomment%}

3. 模板继承

模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量。

典型应用:网站的头部、尾部信息。

3.1 父模板

如果发现在多个模板中某些内容相同,那就应该把这段内容定义到父模板中。

标签block:用于在父模板中预留区域,留给子模板填充差异性的内容,名字不能相同。 为了更好的可读性,建议给endblock标签写上名字,这个名字与对应的block名字相同。父模板中也可以使用上下文中传递过来的数据。

{%block 名称%}

预留区域,可以编写默认内容,也可以没有默认内容

{%endblock 名称%}

3.2 子模板

标签extends:继承,写在子模板文件的第一行。

{% extends "父模板路径"%}

子模版不用填充父模版中的所有预留区域,如果子模版没有填充,则使用父模版定义的默认值。

填充父模板中指定名称的预留区域。

{%block 名称%}

实际填充内容

{{block.super}}用于获取父模板中block的内容

{%endblock 名称%}

4. HTML转义

模板对所有传递的文字进行输出时,合并以下字符自动转义。

小于号< 转换为 <

大于号> 转换为 >

单引号' 转换为 '

双引号" 转换为 "

与符号& 转换为 &

过滤器escape可以实现对变量的html转义,默认模板就会转义,一般省略。

{{t1|escape}}

过滤器safe:局部转义,告诉模板这个变量是安全的,可以解释执行。

{{data|safe}}

标签autoescape:设置一段代码都局部转义,接受on,off参数。

{%autoescape off%}

...

{%endautoescape%}

模板硬编码中的字符串默认不会经过转义,如果需要转义,那需要手动进行转义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sed-笔记

一&#xff0e;sed脚本编程的方法论 1. 在着手做之前要弄清楚想做什么。2. 明确地描述处理的过程。3. 在提交最终的改变之前反复测试这个过程。注1&#xff1a;检测脚本最好的方式&#xff0c;是使用不同的输入样本进行测试并观察结果。二&#xff0e;…

.NET6又出新版本,新增这几个大杀器!

.NET6 Preview4终于发布了&#xff0c;作为第4个预览版&#xff0c;伴随着Build2021发布的&#xff0c;器更新内容也是非常丰富的。推荐关注的有以下11项&#xff1a;引入最小 API异步流HTTP 日志中间件新项目中使用 Kestrel 作为默认启动IConnectionSocketFeature改进单页应用…

蜗杆参数法设计_技术贴 | 减速器结构及设计的注意事项

减速机器用于低转速大扭矩的传动设备&#xff0c;原理是把电动机、内燃机、马达或其它高速运转的动力&#xff0c;通过减速机的输入轴上齿数少的齿轮啮合输出轴上的大齿轮&#xff0c;从而达到减速的目的&#xff1b;大小齿轮的齿数之比&#xff0c;就是传动比。减速器是一种由…

听说热爱生活的人都关注了他们

全世界有3.14 % 的人已经关注了数据与算法之美在信息爆炸的时代快节奏的生活里 你是否曾有一瞬间觉得忙碌而空虚&#xff1f;以下10个优质公众号能让你在闲暇的时候不断的提升自我&#xff0c;拓宽视野愿以书卷气&#xff0c;行我路千里近现代史研究通讯ID&#xff1a;jxsdyjtx…

基于abp vnext制作项目脚手架

首先说明&#xff0c;尊重原创&#xff0c;本文是参考https://www.cnblogs.com/myshowtime/p/14507675.html这篇文章写的&#xff0c;里面内容有部分是直接拷贝过来的。感谢作者分享&#xff01;&#xff01;&#xff01;前期准备工作使用命令 abp new LS.Template --template …

Windows Server 2012 DHCP 服务器中的新功能:故障转移和策略

Windows Server 2012 DHCP 服务器中的新功能如下&#xff1a; DHCP 故障转移&#xff1a;此功能提供让两个 DHCP 服务器服务于 同一子网或作用域的 IP 地址和选项配置的能力&#xff0c;前提是 DHCP 服务对客户端持续可用。两个 DHCP 服务器复制它们之间的租用信息&#xff0c;…

android mvc mvp 简书,浅析 MVP,MVC,MVVM模式(Android)

前言当我们接手一个项目的时候&#xff0c;经常会发现一个activity或fragment动辄上千行甚至上万行代码&#xff0c;这给阅读带来很大的困扰&#xff0c;如果想读懂代码&#xff0c;需要花费很多时间跟精力。引起这个问题的原因想必大家都了解&#xff0c;随着人员不断变动&…

android studio插入数据表中没有_学Java能拿高薪吗 Java中常见排序算法有哪些

学Java能拿高薪吗&#xff1f;Java中常见排序算法有哪些&#xff1f;作为老牌编程语言&#xff0c;Java拥有广阔的市场占有率&#xff0c;几乎90%以上的大中型互联网应用系统在服务端开发都会首选Java。为了加入到Java这一高薪行业&#xff0c;很多人会选择专业学习一下&#x…

最全知识点总结!| 大数据学习路线指南

全世界只有3.14 % 的人关注了数据与算法之美大数据是对海量数据进行存储、计算、统计、分析处理的一系列处理手段&#xff0c;处理的数据量通常是TB级&#xff0c;甚至是PB或EB级的数据&#xff0c;这是传统数据处理手段所无法完成的&#xff0c;其涉及的技术有分布式计算、高并…

数组 边界 检查的几种实现方法

检查传递给函数的数组边界常用方法1.传递指向数组第一个和最后一个元素的下一个位置的指针。2. 将第二个形参定义为表示数组的大小3.数组本身放置一个检测位三种实现方法&#xff1a;#include<iostream> using namespace std; int sumArray(const int *beg,const int *e…

欢迎来到开源的世界!

✉️ 请查收您的保姆级开源百科编程导航 致力于推荐优质编程资源 ????项目开源仓库&#xff1a;https://github.com/liyupi/code-nav跪求一个 star ⭐️大家好&#xff0c;我是鱼二&#xff0c;今天推荐一份开源知识入门的在线电子书《开源指北》。正如官方对这本书的描述&…

html图片宽度高度等比例绽放,css图片自动绽放大小,左右,上下居中

无标题页.pic{max-height:400px;max-width:400px;_width:expression("400px");_height:expression((document.documentElement.clientHeight||document.body.clientHeight)>400?"400px":"");/*_width:expression((document.documentElement.…

归纳推理测试没做完_朋友买了1斤紫菜,2年还没吃完,我教他这样做,2个月就吃完了...

朋友买了1斤紫菜&#xff0c;2年还没吃完&#xff0c;我教他这样做&#xff0c;2个月就吃完了紫菜成熟啦&#xff0c;这段时间回老家&#xff0c;都会看到紫菜养殖户脸上挂着笑容&#xff0c;因为今年的紫菜收成还不错。回家就为了拿紫菜&#xff0c;因为紫菜成熟的季节&#x…

机器学习都需要有哪些数学知识?

随着科技的快速发展&#xff0c;人工智能的重要性日渐显现。机器学习是一个异常丰富的研究领域&#xff0c;有大量未解决的问题&#xff1a;公正、可解释性、易用性。如同所有的学科一样&#xff0c;它的基本思想不是请求式的过程&#xff0c;而是需要耐心地用高级数学框架思考…

(转)64bit上安装32位oracle 10 g出现错误:无法定位承诺工序输入点 getprocessimagifilenamew 于动态链接库PSAPI.DLL...

转自http://jonelove00.iteye.com/blog/1685206安装时以最高管理员身份运行&#xff1a;红色字体为自己加上去的代码找到..\database\stage\prereq\db\refhost.xml打开加入<OPERATING_SYSTEM> <VERSION VALUE"6.1"/></OPERATING_SYSTEM> 再找…

10kv电压互感器型号_电压互感器型号大全

电压互感器简介电压互感器(Potentialtransformer简称PT&#xff0c;Voltagetransformer也简称VT)和变压器类似&#xff0c;是用来变换线路上的电压的仪器。但是变压器变换电压的目的是为了输送电能&#xff0c;因此容量很大&#xff0c;一般都是以千伏安或兆伏安为计算单位&…

C# 常用接口学习 IEnumerableT

我们先去看看公开的.Net4.0的源程序中IEnumerable<T>、IEnumerable、IEnumerator<T>和IEnumerator这四个接口是如何声明的&#xff1a;需加微信交流群的&#xff0c;请加小编微信号zls20210502&#xff0c;切记备注 加群&#xff0c;小编将会第一时间邀请你进群&am…

html5伸缩效果,【HTML5】Jquery打造竖向伸缩/展开菜单

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼效果图如下&#xff1a;jquery打造竖向伸缩/展开菜单body { font-family: Arial; font-size: 16px; }dl { width: 300px; }dl,dd { margin: 0; }dt { background-color:#ae8758; background-image:url(/jscss/demoimg/201207.png);…

labelme 语义分割数据集_labelme安装以及使用教程——自制语义分割数据集(保姆级示范)...

前言&#xff1a;这次我们要做的是一个物堆(也可以是沙、矿堆之类)的数据集&#xff0c;用于语义分割。我们的工作&#xff0c;就是要使用labelme工具&#xff0c;利用原图1.jpg生成它的标签图片1.png&#xff0c;得到的最终结果像下面这样&#xff1a;1. 安装 Anaconda3具体安…

看过这么多爆文,依旧走不好异步编程这条路?​

点击蓝字关注我们本文带大家抓住异步编程async/await语法糖的牛鼻子: SynchronizationContext。引言 C#异步编程语法糖async/await&#xff0c;使开发者很容易就能编写异步代码。零散看过很多文章&#xff0c;很多是填鸭式灌输 (有的翻译文还有偏差)。遵守以上冷冰冰的②③条的…