templates模板文件
templates 该目录本身没有,如果我们需要使用,需要我们自己创建,该目录名通常为templates
1、创建位置:
1.直接在应用下创建该目录,应用下的html模板,能直接在应用下的views中使用,一般也只给自己的应用使用
2.直接在项目下创建该目录,在项目下创建的改目录,所有的应用中的views都可以方便的使用
3.若果是项目下的templates目录,需要配置才可以使用
配置:1.在setting的TEMPLATES中配置
'DIRS': [os.path.join(BASE_DIR,'templates')],
2.项目不能识别templates为模板目录,需要将该目录标记成模板目录才可以使用
标记: templates目录右键 ---- mark Directory as ---- template Folder看到目录变成紫色即可
注:如果遇到template不能识别,重新做以上操作
2、模板语法
1、变量
1.变量通常在views中定义,然后传递给模板,模板中直接使用就可以
2.使用变量: {{ 变量名 }} 用两个大括号括起来
3.注意: 如果模板板中的变量没有定义就使用了, 模板不会报错,当作空使用
2、语法
1、“.”语法
1.1、 . 可以用来调用属性
格式: 对象名.属性名
1.2.、. 可以用来调用方法
格式: 对象名.方法名 注意不加()
1.3、如果. 用在集合(list,tuple...)的 后面,可以连接索引, 可以获取索引位置的值
格式: 集合.索引 相当于python的: 集合[索引]
1.4、如果 . 用在字典的后面, 可以连接 可以,可以获取key对应的值
格式: 字典.key 相当于python的: 字典[key]
2、for语句
2.1、for 循环
{% for 变量名 in 集合名%}
循环体
{% endfor %}
2.2、
{% for 变量名 in 集合名 %}
循环体
{% empty %}
如果集合为空,应该显示的内容
{% endfor %}
2.3、forloop 循环的技术器
forloop.counter 从1开始计数
forloop.counter0 从0开始计数
forloop.first 是否是第一个数据
forloop.last 是否是最后一个数据
forloop.revcounter 从1开始计数, 倒着计数,即最大数是第一个
forloop.revcounter0 从0开始计数, 倒着计数,即最大数是第一个
3、判断语句
3.1、if语句
{% if 判断表达式1 %}
如果满足条件1就执行表达式1
{% elif 判断表达式2 %}
如果满足条件2就执行表达式2
{% else %}
否则执行表达式3
{% endif %}
注:elif与else可以省略
3.2、判断2个值是否相等
{% ifequal valu1 value2 %}
如果value1 等于value2执行表达式
{% endifequal %}
注意: 当value1与value2值相等,且类型也一样的时候才成立
3.3、比较运算符
> < >= <= == !=
比较运算符可用在if语句中作判断使用
4、运算方法
4.1、加法/减法 {% 值1|add值2 %} 值1 + 值2 注:当值2为负数时,即为减法
4.2、乘法/除法 {% widthratio value 分母 分子 %} 注:格式为: value * 分子 / 分母
4.3、整除 格式:{{ value|divisibleby:值 }} value是否能整除 值
4.4、大小写转换
转换成小写:{{ value|lower }}
转换成大写:{{ value|upper }}
4.5、字符串拼接: {{ 集合|join:"拼接的字符" }}
5、转义字符
5.1、在模板中 使用{{ 变量|safe }} 是得变量的字符串中的html标签生效
5.2、使用 autoescape
① {% autoescape on %}
{# 这里面的内容就是不生效的HTML字符串#}
{{ strHtml }}
{% endautoescape %}
② {% autoescape off %}
{# 这里面的内容就是可以生效的HTML字符串#}
{{ 变量 }} {% endautoescape %}
6、模板的继承
6.1、继承
在子模板首行写入{% extends '父模板路基' %} ,即可继承父模板
例:
6.2、在父模板中为子模板预留位置
6.2.1、在父模板中预留位置
在需要填充子模板内容的地方 写上 :
{% block 坑的名字 %}
父模板可在此写入内容
{% endblock %}
6.2.2、在子模板中将数据填入预留的位置
{% block 坑的名字 %}
填充的内容
{% endblock %}
注:子模板填充内容会将父模板的内容覆盖
6.2.3、在子模板填充内容的同时希望保留父模板的内容
在填充内容的首行加上 {{ block.super }}
例:{% block head %}
{{ block.super }}
<h1>xxxx</h1>
{% endblock %}
6.3、将多个分散的html使用include合并成一个完整的html
格式:{% include 'html文件' %}
例:将head.html、body.html、foot.html三个html文件合并
head.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>这是头
</body>
</html>
bady.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div style="height: 200px; width: 200px; background: pink">身子
</div>
</body>
</html>
foot.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>这是臭脚丫子
</body>
</html>
将三者合并:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
{# 将零散的html拼接成一个完整的html #}{% include 'head.html' %}{% include 'bannar.html' %}{% include 'foot.html' %}
</body>
</html>
效果图:
7、模板的简单加载原理
模板的加载过程
def loadTem(request):
# 7.1、先将模板加载到views函数中
template = loader.get_template("HTML文件")
# 7.2、把数据给模板,并转换成html形式的字符串
htmlData = template.render(context={"content":"内容xxxxxx"})
# 7.3、把数据作为相应体,给客户端 html本质就是字符串
return HttpResponse(htmlData)
templates模板文件相关推荐
- 将moss 2007的模板文件导入到moss 2010
最近公司HR请请将一个moss2007的调查模板文件导入到我们部门的Moss protal 上面. 我想这是举手之劳,就爽快的答应了. 但是导入时却报如下错误: Error Microsoft Sha ...
- django-2 模板文件的加载
django-2 模板文件的加载 1.创建模板文件 index.html 2.在django使用模板文件 需要在app下创建templates文件夹 此为django固定模板文件位置 3.编辑 ...
- Elasticsearch——Templates 模板
2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch--Templates 模板 博客分类: java 搜索引擎,爬虫 刚开始的时候,每次实验都去改/e ...
- 自己动手实现简易代码生成器、采用文本模板文件生成服务层、服务层接口代码的做法参考...
为什么80%的码农都做不了架构师?>>> 最近受到 单程列车 http://www.cnblogs.com/zhaojingjing/ 的启发,让我做一个模板文件来生成代码, ...
- Django框架(8.Django中的模板文件的使用和模板变量的简单使用)
为什么使用模板 通过视图可以给用户返回一些字符串等等, 那如何向请求者返回一个漂亮的页面呢? 肯定需要用到html.css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为 ...
- Django(part53)--404模板文件
学习笔记,仅供参考 404模板文件 我们可以在项目下的模板文件夹templates内添加 404.html 模版,当响应返回HttpResponseNotFound 或 raise Http404时, ...
- Django之templates模板
模板的使用 1.如何使用模板 在manage.py的同级文件夹中创建templates 在setting.py的文件中把第58行'DIRS': [ ],改成'DIRS': [os.path.join( ...
- 修改了模板文件tpl如何立即生效_Views视图与模板
一.概述 用户请求到视图流程: 当有人访问我们django项目的时候 例如127.0.0.1:8000/polls/23,django首先到加载mysite.urls模块 在mysite.urls中发 ...
- Python测试开发django5.templates模板变量传参
上一篇,我们学习了Python测试开发django4.templates模板配置 templates模板中html文件是一个静态页面,写四的,如果有时我们想动态的传入一些不同的参数,想实现在一个固定的 ...
- Python测试开发django4.templates模板配置
[上一篇]我们讲了Python测试开发django3.视图和URL配置 今天详细介绍下 Django 模板的应用,模板是一个文本,用于分离文档的表现形式和内容. 我们已经知道创建项目用django-a ...
最新文章
- 关于小程序云开发的一些经典问题处理
- 有两个不同list,需要对比两个list内容且输出差异的内容
- 朝鲜时蔬(分数据点写算法+毒瘤数学)
- 2-14 三级菜单
- 如何看待EMNLP2021 best paper? 邱锡鹏教授:以为走错会场了
- Swift仿写喜马拉雅FM
- vue项目中input框默认获得焦点,回车选中输入文本
- 润乾报表-数据源的选取不能选视图
- idm6.40最新版exe下载器介绍
- 微信短视频小程序——视频封面,视频缩略图
- Android APP安全测试
- HDU2586 How far away ?(LCA模板题)
- 2019年成功与失败的危机公关案例分析
- 使用NPOI设置Excel表的单元格背景颜色
- 硬件大厂技术一面题目
- python2exe_Python 使用Py2exe进行bin化
- 二进制、八进制、十进制和十六进制的转换
- C语言求1到10以内的约数,倍数和约数 教学设计资料
- iOS - 手动下架的应用后快速恢复上架
- Android 缺少SO库(只有armabi)的解决办法
热门文章
- 4-google translate插件安装及使用
- Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.xxx.app.ui.activity
- RCC_APB2Periph_ALL 哪儿里去了?
- 更改计算机时间格式,修改电脑日期时间显示格式
- C# 插入、删除Excel分页符
- java怎么加锁_JAVA多线程(3)——如何加锁
- 240升水,运往干旱地区,最多携带60升,前进1公里耗1升,最多可赚多少钱
- LOJ 6437 PKUSC2018 PKUSC
- 什么是化工工程?重化工业包含哪些项目?
- c语言编程竞赛活动主题,第三届“希望之星”C语言编程大赛系列活动