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

PPT
  • 阅读 71 次
  • 下载 0 次
  • 页数 26 页
  • 大小 89.632 KB
  • 2022-11-12 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档8.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
PythonWeb开发基础教程-第6章-模板
可在后台配置第一页与第二页中间广告代码
PythonWeb开发基础教程-第6章-模板
可在后台配置第二页与第三页中间广告代码
PythonWeb开发基础教程-第6章-模板
可在后台配置第三页与第四页中间广告代码
PythonWeb开发基础教程-第6章-模板
PythonWeb开发基础教程-第6章-模板
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 26
  • 收藏
  • 违规举报
  • © 版权认领
下载文档8.00 元 加入VIP免费下载
文本内容

【文档说明】PythonWeb开发基础教程-第6章-模板.pptx,共(26)页,89.632 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-2367.html

以下为本文档部分文字说明:

PythonWeb开发基础教程(Django版)第6章模板本章主要内容:模板基础模板语言模板继承6.1模板基础本节主要内容配置模板引擎使用模板类使用模板文件6.1.1配置模板引擎模板引擎也称后端(BACKEND)。在项目配置文件s

ettings.py的TEMPLATES变量中配置模板时,使用BACKEND选项配置模板引擎。创建项目时,通常会在settings.py配置文件中添加模板的默认设置Django的默认模板引擎为django.template.backends.django.DjangoTempla

tes,其语法为Django模板语言(简称DTL)。django.template.backends.jinja2.Jinja2是另一个Django内置的模板引擎。模板配置中的APP_DIRS默认值为True,表示模板引擎将在项目的所有应用目录中搜索模板文件。也可在DIRS选项中指定

搜索路径,示例代码如下。TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':['/html/templates','/html/django'],},]Djang

o会按照DIRS选项中路径的先后顺序搜索模板文件。OPTIONS选项中的context_processors选项用于注册在模板中使用的上下文处理器。如果配置了多个模板引擎,则按先后顺序依次在各个模板引擎的搜索路径中寻找模板文件。6.1.2使用模板类dango.templ

ate.Template是Django提供的模板类,调用模板类的构造函数Template(),可以快速创建模板对象。调用模板对象的render()方法,可将模板渲染为HTML代码。例如:>>>fromdjango.templateimportTemplate,

Context>>>t=Template('你提交的数据为:{{data}}')#创建模板对象>>>context=Context({'data':123})#创建上下文对象>>>t.render(context)#渲染模板'你提

交的数据为:123'构造函数Template()将模板字符串作为参数来创建模板对象。构造函数Context()用字典对象创建上下文对象,用于封装传递给模板的数据。模板对象的render()方法接收上下文对象参数,执行渲染

操作,将数据填入模板,生成HTML代码。6.1.3使用模板文件Template对象适用于处理比较简单的模板。相对复杂的模板则应使用模板文件。模板文件是一个包含了模板语言代码的文本文件。Django对模板文件扩展名没有要求,可以是.html、.txt等,也可以没有扩展名。1.定义模板文件例

如,下面的模板显示视图传递的时间。<!--chapter6\chapter6\templates\mytemplate.html--><html><head><metacharset="utf-8"/><title>使用模板</title></head><bo

dy>当前时间:{{time}}</body></html>本章示例项目名称为chapter6。默认情况下,模板配置中APP_DIRS值为True,DIRS为空。所以,模板文件需放置在chapter6\chapter6\templates文件夹中。如果放在其他位置

,则需要在DIRS选项中进行设置,否则Django会找不到模板文件。2.定义使用模板的视图通常,模板文件不能直接使用,需要在视图中使用。例如,下面的代码定义了使用模板的视图。#chapter6\chapter6\views.pyfromdjango.httpimportHttpRespons

efromdatetimeimportdatetimefromdjango.template.loaderimportget_templatedefgetTime(request):time=datetime.today()#准备

数据t=get_template('mytemplate.html')#载入模板文件html=t.render({'time':time})#渲染模板returnHttpResponse(html)#将模板渲染结果返回客户端视图首先调

用get_template()方法来载入模板,再调用render()方法以渲染模板。在使用Template对象来创建模板时,需使用上下文对象作为render()方法的参数。使用模板文件时,则需使用字典对象作为render()

方法的参数。3.使用TemplateResponseTemplateResponse使用模板文件生成HttpResponse响应,TemplateResponse包含了载入模板和渲染模板操作,需要编写的代码更少,示例代码如下。#chapter6\chapter6\views.pyfromda

tetimeimportdatetimefromdjango.template.responseimportTemplateResponse……defgetTime2(request):time=datetime.tod

ay()returnTemplateResponse(request,'mytemplate.htm',{'time':time})4.使用快捷函数render()django.shortcuts模块中的快捷

函数render()与TemplateResponse构造函数类似,使用模板文件和上下文字典来渲染模板,并返回封装响应结果的HttpResponse对象。例如:#chapter6\chapter6\view

s.pyfromdatetimeimportdatetimefromdjango.shortcutsimportrender……defgetTime3(request):time=datetime.today()returnrender(reque

st,'mytemplate.html',{'time':time})6.2模板语言Django模板引擎支持Django模板语言(简称DTL)。DTL包含变量、注释、过滤器、标签、模板继承以及HTML转义等语法。本节主要内容变量注释过滤器标签:i

nclude标签:for标签:if6.2.1变量DTL用{{变量名}}格式表示变量。变量名由字母、数字和下划线组成,但不能以下划线开头。Django在渲染模板时,会将遇到的变量替换为上下文中对应的变量值。如果变量是对象,可使用点号(.)

访问其属性或方法。>>>t=Template('姓名:{{data.name}},年龄:{{data.age}},日期:{{now}}')#创建模板>>>classuser:pass#定义类...>>>u=user()#创

建对象>>>u.name="张三"#设置属性>>>u.age=25#设置数据>>>d=datetime.now()>>>c=Context({'data':u,'now':d})#创建上下文>>>t.rende

r(c)#渲染模板'姓名:张三,年龄:25,日期:July5,2019,10:49a.m.'6.2.2注释DTL用{#…#}来表示注释,注释的内容不会出现在渲染结果中,示例代码如下。>>>t=Template('姓名:{{data.name}},{#年龄:{{d

ata.age}}#},日期:{{now}}')>>>t.render(c)'姓名:张三,,日期:July5,2019,10:49a.m.'模板中年龄的部分被注释,所以渲染结果中没有年龄信息。被{#…#}注释的内容不能换行。要注释多行内容,

应使用comment标签示例代码如下。<p>姓名:{{name}}</p>{%comment"多行注释"%}<p>年龄:{{age}}</p><p>日期:{{now}}</p>{%endcomment%}6.2.3过滤器过滤器用于改变变量的显示结果。几个常用的过滤器如下。de

fault:设置变量为false或为空时显示的替代值。基本格式为{{变量|default:替代值}}。length:返回字符串或列表的长度。基本格式为{{变量|length}}。filesizeformat:将数值转换为文件大小格式,如2.5KB、12MB等。基本格式为

{{变量|filesizeformat}}。例如:>>>t=Template('数据:{{a|default:"不正确"}},长度:{{b|length}},文件大小:{{c|filesizeformat}}')>>>c=Context

({'a':False,'b':'abcd','c':123456})>>>t.render(c)'数据:不正确,长度:4,文件大小:120.6\xa0KB'6.2.4标签:include标签用于完成一些更复杂的操作,如包含模板、控制流

程、创建输出文本或者实现模板继承等。include标签用于包含模板,将其他模板代码插入到当前位置,并使用当前模板的上下文进行渲染。include标签的基本格式如下。{%include模板名称%}可在包含模板时指定参数,示例代码如下。{%include'templatea.html'

withdata='abcd'%}with之后连接的是参数,参数名与模板中的变量名一致。在传递多个参数时,使用空格作为分隔符,示例代码如下。{%include'templatea.html'withdata='abcd'data2=123%}6.2.5标签:forfor标签用于构造

循环,遍历可迭代对象。在for标签块内部,可使用下列变量。forloop.counter:当前循环的索引,索引从1开始。forloop.counter0:当前循环的索引,索引从0开始。forloop.revcounter:反向循环时,当前循环的索引,索引从1开

始。forloop.revcounter0:反向循环时,当前循环的索引,索引从0开始。forloop.first:在第一次通过循环时值为真,否则为假。forloop.last:在最后一次通过循环时值为真,否则为假。forloop.paren

tloop:嵌套循环的外层循环。例如:<table>{%forrindata%}<tr><td>第{{forloop.counter}}行:</td>{%forainr%}<td>{{a}}</td>{%endfor%}</tr>{%endfor%}</table>6.2.

6标签:ifif标签用于构造条件分支,其基本结构如下。{%ifvar1%}……{%elifvar2%}……{%else%}……{%endif%}elif和else块可以省略,elif块可以有多个。Django按先后顺序依次计算if和elif标签的变量,

如果变量为“真”(即变量存在、不为空,且不是False),则输出相应的数据块,然后流程跳转到endif标签之后。如果没有变量为“真”,则输出else数据块(如果else数据块存在的话)。在if和elif标签

中直接使用变量时,当变量存在、不为空且不是False时,视为“真”。在if和elif标签中可使用下列逻辑运算符。not:逻辑取反,“真”取反为“假”,“假”取反为“真”。例如,{%ifnotdata%}。and:逻辑与,

当两个操作数均为“真”时,结果才为“真”。例如,{%ifxandy%}。or:逻辑或,当两个操作数均为“假”时,结果才为“假”。例如,{%ifxory%}。3个逻辑运算符的优先级从高到低依次为:not、and、or。if和elif标签中可

使用下列比较运算符。==:相等。例如,{%ifx==y%}。!=:不相等。例如,{%ifx!=y%}。<:小于。例如,{%ifx<y%}。>:大于。例如,{%ifx>y%}。<=:小于等于。例如,{%ifx<=y%}。>=:大于等于

。例如,{%ifx>=y%}。in:操作数x是否包含于y中,y可以是字符串、列表、集合或QuerySet等。例如,{%ifxin'abcdefg'%}。notin:不包含于。例如,{%ifxnotin'abcd

efg'%}。is:两个对象是否相同。例如,{%ifxisTrue%}。isnot:两个对象是否不相同。例如,{%ifxisnotNone%}。6.3模板继承Django支持模板继承,子模板通过继承获得父模板的内容,并且可在子模板中

覆盖父模板中的块。父模板用{%block%}和{%endblock%}标签定义块。子模板用{%extends%}标签继承父模板,并通过定义同名的块来覆盖父模板中的块。6.4实践:用模板实现数据分页本节主要内容

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?