Django的模板(Templates)
1, 什么是模板
要动态的给用户呈现的网页内容;
其实是一个前后端结合的网页--Python和HTML结合到一起
2, 模板的设置
在setting.py 中 TEMPLATES变量
TEMPLATES = [
{
'BACKEND':'... ...',
'DIRS':[.. ...]}
]
1, BACKEND: 指定模板的搜索引擎,不用动
2, DIRS: 指定模板所存放的目录(s)
DIRS = ['index.temp','music.temp']
如果DIRS中为空,则Django会自动到每个应用中去搜索一个templates的目录来座位模板的管理目录;
推荐:
1,DIRS保持为空
2,在每个应用中都创建一个templates目录;(保证应用已注册)
3, APP_DIRS:
True: 首先从DIRS中指定的目录中查找模板,如果没找到的话,再搜索templates目录
3, 模板的加载方式
方法一, 使用loader模块 获取模板,并通过HttpResponse进行响应;
from jdango.template import loader
step1: 通过loader 加载模板
t = loader.get_template('模板名称.html')
step2: 通过t对象将模板渲染成字符串
html = t.render()
step3: 通过HttpResponse 将html响应给客户端
return HttpResponse(html)
方法二: 使用render 直接加载模板,并返回(推荐)
from django.shortcuts import render
return render(request,"模板名称",[字典传参,可省略])
4, 模板的语法:
1,变量:
1, 作用:允许将后端的数据传递给模板,在模板中可以根据变量的值进行显示;
2, 在Django中允许传递给模板做变量的数据类型:
数字,字符串,列表,元组,字典,函数,对象
3, 变量的语法
1、 loader 方式
需要使用字典传递;
dic = {
'var1' = 'value1',
'var2' = 'value2',
}
eg:
t = loader.get_template('xxx.html')
html = t.render(dic)
return HttpResponse(html)
在模板中显示变量: {{变量名}}
注意:
列表,元祖,字典 如果要取其中的某个数据,变量名调用的时候需要使用"."
lst[0]:{{list.0}}
tup[0]:{{tup.0}}
dic.B:{{dic.B}}
2、 使用render方式
dic = {
'var1' = 'value1',
'var2' = 'value2',
}
return render(request,"模板名称",dic)
注意: 如果传递的变量都是局部变量,可以以locals() 代替字典传参
练习:
访问: http://localhost:8000/news/05_exer
模板中显示以下内容:
书名:《the end of history》
作者: Trump
出版社: Reader
出版时间: 2017-1-17
内容可变,以变量方式传入
2, 标签
定义: 将服务器端的一些功能嵌入到模板中;
语法:
{% 标签内容 %}
部分标签拥有结束标签{% end标签内容 %}
eg:
{% comment %} xxx {% endcomment%}
<ul>
{% for athlete in athlete list %}
<li>{{athlete.name}}</li>
{% endfor %}
</ul>
常用标签:
1, for
{%for 变量 in 列表|元祖|字典 %}
{% endfor %}
for内部允许使用for提供的内置变量 - forloop
1, forloop.counter: return int
记录当前循环的次数,从1开始
2, forloop.first 返回值为布尔类型
是否是第一次循环(第一项)
3, forloop.last: 返回值为布尔类型
是否是最后一次循环(最后一项)
2, if 结构
1,
{% if 条件 %}
statement1
{% endif %}
条件中允许使用比较运算符(>,<,>=...)和逻辑运算符(not,and,or)
注意:and 和 or不能同时出现
2,
{% if 条件 %}
statement1
{% else %}
statement2
{% endif %}
3,
{% if 条件1 %}
statement1
{% elif 条件2 %}
statment2
{% elif 条件3 %}
statment3
{% else %}
other statment
{% endif %}
3, 过滤器
1, 作用
过滤数据
在显示变量的数据之前,允许对数据进行筛选或者改变;
2, 语法:
{{变量|过滤器:参数}}
{{value|add:"2"}} value输出之前对其进行二次处理,如果value=4,则输出的是6
3, 简单的过滤器
1, {{value|upper}}
将value变为大写字符
2, {{value|lower}}
将value变为小写字符
3, {{value|add:num}}
将num累加到value之后
4, {{value|floatformat:n}}
将value四舍五入到n为小数
5, {{value|truncatechars:n}}
将字符串截取到n位(包含...)
作业:
1,创建一个项目.
2, 创建应用 index
3, 配置 路由配置模块
4, 将login.html移植到其中,以模板的方式呈现;
Django笔记五---模板Templates
最新推荐文章于 2022-11-23 16:20:09 发布