收藏 分销(赏)

PythonWeb开发基础教程 第6章 模板.pdf

上传人:曲**** 文档编号:225351 上传时间:2023-03-08 格式:PDF 页数:26 大小:598.58KB
下载 相关 举报
PythonWeb开发基础教程 第6章 模板.pdf_第1页
第1页 / 共26页
PythonWeb开发基础教程 第6章 模板.pdf_第2页
第2页 / 共26页
PythonWeb开发基础教程 第6章 模板.pdf_第3页
第3页 / 共26页
PythonWeb开发基础教程 第6章 模板.pdf_第4页
第4页 / 共26页
PythonWeb开发基础教程 第6章 模板.pdf_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、Python Web开发基础教程(Django版)第6章模板本章主要内容:模板基础模板语言模板继承6.1模板基础本节主要内容配置模板引擎使用模板类,使用模板文件6.1.1配置模板引擎模板引擎也称后端(BACKEND)o在项目配置文件settin生.py的TEMPLATES变量中配置模板时,使用BACKEND选项配直横板弓|擎。创建项目时,通常会在settings.py配置文件中添加模板的默认 设置 Django的默认模板引擎为、django.template.backends.django.DjangoTemplates,其语法为Django模板语言(简称DTL)。django.templat

2、e,backends.jinja2.Jinja2 是另个 Django 内置的模 板引擎。模板配置中的APP_DIRS默认值为True,表示模板引擎将在项目的所有应用目录中搜 索模板文件。也可在DIRS选项中指定搜索路径,示例代码如下。TEMPLATES=BACKEND1:django.template.backends.django.DjangoTemplates,DIRS:/html/templates/Zhtml/django,Django会按照DIRS选项中路径的先后顺序搜索模板文件。OPTIONS选项中的context_processors选项用于注册在模板中使用的上下文处理器。如赛

3、配置了多个模板引擎,则按先后顺序依次在各个模板引擎的搜索路径中寻找模板 文件。6.1.2使用模板类,dango.template.Template是Django提供的模板类,调用模板类的构造函数Template。,可以快 速窃建模破对象。,调用模板对象的render。方法,可将模板渲染为HTML代码。例如:from django.template import Template,Context,t=TemplateC你提交的数据为:data,)#创建模板对象 context=Context(data:i23)#创建上下文对象,t.render(context)#渲染模板,你提交的数据为:123

4、1,构造函数Template。将模板字符串作为参数来创建模板对象。构造函数Context。用字典对象创建上下文对象,用于封装传递给模板的数据。模板对象的render。方法接收上下文对象参数,执行渲染操作,将数据填入模板,生成HTML代 码。6.1.3使用模板文件Template对象适用于处理比较简单的模板。相对复杂的模板则应使用模板文件。模板文件是一个包含了模板语言代码的文本文件。Django对模板文件扩展名没有要求,可以是.html、.txt等,也可以没有扩展名。1.定义模板文件例如,下面的模板显示视图传递的时间。使用模板 当前时间:time 本章示例项目名称为ch叩ter6。默认情况下,模

5、板配置中APP_DIRS值为True,DIRS 为空。所以,模板文件需放置在ch叩ter6ch叩ter6templates 文件夹中。如果放在其他位置,则需要在DIRS选项中进行设置,否则Django会找不到模板文件。2.定义使用模板的视通常,模板文件不能直接使用,需要在视图中使用。例如,下面的代码定义了使用模板的视图。#chapter6chapter6views.pyfrom django.http import HttpResponse from datetime import datetimefrom django.template.loader import get_templated

6、ef getTime(request):time=datetime.today()t=get_template(myteiriplate.htiTir)html=t.render(time:time)return HttpResponse(html)#准备数据#载入模板文件#渲染模板#将模板渲染结果返回客户端视图首先调用get_template()方法来载入模板,再调用render。方法以渲染模板。在使用Template对象来创建模板时,需使用上下文对象作为render。方法的参数。使用模板文件时,则需使用字典 对象作为render。方法的参数。3.便 fflTemplateResponseT

7、emplateResponse使用模板文件生成HttpResponse响应,TemplateResponse包含了载入模板和渲集模板操作,需 要编写的代庖更少,示例代码如下。#chapter6chapter6views.py from datetime import datetime from django.template.response importTemplateResponsedef getTime2(request):time=datetime.today()return TemplateResponse(request/,mytemplate.htm,/,time,:time)4

8、.使用快捷函数render。django.shortcuts模块中的快捷函数render。与TemplateReponse构造函数类似,使用 橙板文件和上下文字典来渲染模板,并返回封装响应结窠的HttpResponse对象。例如:#chapter6chapter6views.pyfrom datetime import datetimefrom django.shortcuts import renderdef getTime3(request):time=datetime.today()return renderequest/mytemplate.htmrjtimeitime)6.2模板语言

9、 Django模板引擎支持Django模板语言(简称DTL)。DTL包含变量、注释、过滤器、标签、模板继承以及HTML转义 等语法。本节主要内容量释滤签签签 变注过标标标器:include:for:if621变量 DTL用变量名格式表示变量。变量名由字母、数字和下划线组成,但不能以下划线 开头。Django在渲染模板时,会将遇到的变量替换为上下文 中对应的变量值。如果变量是对象,可使用点号(.)访问其属性或方 法。t=TemplateC姓名:data.name,年龄:data.age,日期:now1)#创建模板 class user:pass#定义类 u=user()#创建对象 u.name=

10、”张三”#设置属性 u.aqe=25#设置数据 d=datetime.now()c=Context(,data,:u/,now,:d)#创建上下文 t.render(c)#渲染模板 姓名:张三,年龄:25,日期:July 5/2019/工o:49 a.m6.2.2注释DTL用济捐来表示注释,注释的内容不会出现在渲染结果中,示例代 码如下。t=TemplateC姓名:data.name,#年龄:data.age#,日期:now1)t.render(c)姓名:张三,日期:July 5,2019,10:49 a-m-模板中年龄的部分被注释,所以渲染结果中没有年龄信息。被济#注释的内容不能换行。要注释

11、多行内容,应使用comment标签,示例代码如下。姓名:name%comment11 多行注释11%年龄:age H期:now%endcomment%6.2.3过滤器,过滤器用于改变变量的显示结果。几个常用的过滤器如下。default:设置变量为false或为空时显示的替代值。基本格式为变量default:替代值 length:返回字符串或列表的长度。基本格式为变量length filesizeformat:将数值转换为文件大小格式,如2.5KB、12MB等。基本格式 为:变量|filesizeformat o例如:t=TemplateC数据:a|default:不正确,长度:b|length

12、,文件大小:c|filesizeformatH)c=Context(,a,:False/,b,:,abcd,/,c,:i234561)t.render(c),数据:不正球 长度:4,文件大小:i2O.6xaoKB624 标签:include 标签用土完成一窘更复杂的操作,如包含模板、控制流程、创建输出文本或 者实现模板继承等。include标签用于包含模板,将其他模板代码插入到当前位置,并使用当前模 板的上下文进行渲染。include标签的基本格式如下。%include模板名称可在包含模板时指定参数,示例代码如下。%include templatea.html with data=,abcd%

13、with之后连接的是参数,参数名与模板中的变量名一致。在传递多个参数时,使用空格作为分隔符,示例代码如下。%include templatea.html with data=abcd,data2=i23%625 标签:forfor标签用于构造循环,遍历可迭代对象。在for标签块内部,可 使用下列变量。forloop.counter:当前循环的索引,索引从1开始。forloop.countero:当前循环的索引,索引从o开始。forloop.revcounter:反向循环时,当前循环的索引,索引从i开始。forloop.revcountero:反向循环时,当前循环的索引,索引从o开始。forlo

14、op.first:在第一次通过循环时值为真,否则为假。forloop.last:在最后一次通过循环时值为真,否则为假。forloop.parentloop:嵌套循环的外层循环。例如:%for r in data%第forloop.counter行:%for a in r%a%endfor%endfor%6.2.6 标签:if,if标签用于构造条件分支,其基本结构如下。,%if van,%elif var2%,%else%endif%elif和else块可以省略,elif块可以有多个。Django按先后顺序依次计算if和elif标签的变量,如果变量为“真”(即变量存在、不为空,且 不是False

15、),则输出相应的数据块,然后流程跳转到endif标签之后。如果没有变量为“真”,则输出else数据块(如果else数据块存在的话)。在if和elif标签中直接使用变量时,当变量存在、不为空 且不是False时,视为“真”。在if和elif标签中可使用下列逻辑运算符。not:逻辑取反,“真”取反为假,假取反为“真”。例如,%if not data%。and:逻辑与,当两个操作数均为“真”时,结果才为“真”。例如,%if xand y%。-or:逻辑或,当两个操作数均为“假”时,结果才为“假”。例如,%if xory%。3个逻辑运算符的优先级从高到低依次为:not、and、or。if和elif标签

16、中可使用下列比较运算符。=:相等。例如,%if x=y%o!=:不相等。例如,%ifx!二y%。:小于。例如,%ifx:大于。例如,if x y%1o=:小于等于。例如,%ifx=:大于等于。例如,%ifx=y%。in:操作数x是否包含于y中,y可以是字符串、列表、集合或QuerySet等。例如,%if x in abcdefg%。not in:不包含于。例如,%if x not in abcdefg%o is:两个对象是否相同。例如,%ifxisTrue%。is not:两个对象是否不相同。例如,%if x is not None%。6.3 模板继承,Django支持模板继承,子模板通过继承获得父模板的 内容,并且可在子模板中覆盖父模板中的块。*父模板用%block%和%endblock%标签定义块。子模板用%extends%y标签继承父模板,并通过定义 同名的块来覆盖父模板中的块。6.4 实践:用模板实现数据分页本节主要内容

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 人力资源管理师考试

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服