全栈工程师-后端开发-Flask_Flask进阶:模板引擎与静态文件.docx

全栈工程师-后端开发-Flask_Flask进阶:模板引擎与静态文件.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE1

PAGE1

Flask模板引擎进阶

1Jinja2模板引擎基础

Jinja2是Flask框架中使用的模板引擎,它提供了强大的功能来动态生成HTML页面。Jinja2使用{{}}来插入变量,{%%}来执行控制结构,如循环和条件判断,以及{##}来添加注释。

1.1示例代码

假设我们有一个简单的用户信息字典:

fromflaskimportFlask,render_template

app=Flask(__name__)

@app.route(/)

defindex():

user={username:张三,email:zhangsan@}

returnrender_template(index.html,user=user)

在index.html中,我们可以使用Jinja2来显示这些信息:

!DOCTYPEhtml

html

head

title用户信息/title

/head

body

h1欢迎,{{user.username}}!/h1

p您的邮箱是:{{user.email}}/p

/body

/html

1.2描述

在上面的例子中,我们使用{{user.username}}和{{user.email}}来插入变量。Flask会将这些变量替换为实际的值,从而生成动态的HTML页面。

2模板继承与块

Jinja2支持模板继承,允许我们创建一个基础模板,然后在子模板中重用和扩展这个基础模板。这通过block标签实现。

2.1示例代码

首先,我们创建一个基础模板base.html:

!DOCTYPEhtml

html

head

title{%blocktitle%}默认标题{%endblock%}/title

/head

body

divid=content

{%blockcontent%}{%endblock%}

/div

divid=footer

版权所有?2023

/div

/body

/html

然后,我们创建一个子模板index.html,继承base.html:

{%extendsbase.html%}

{%blocktitle%}首页{%endblock%}

{%blockcontent%}

h1欢迎来到我们的网站!/h1

p这里是首页的内容。/p

{%endblock%}

2.2描述

在base.html中,我们定义了title和content两个块。在index.html中,我们使用{%extendsbase.html%}来继承基础模板,并通过{%block%}和{%endblock%}来重写这些块的内容。这样,我们可以保持代码的整洁和可重用性。

3模板过滤器与自定义过滤器

Jinja2提供了多种内置过滤器,如lower、upper、title等,用于格式化变量。我们还可以定义自定义过滤器来扩展其功能。

3.1示例代码

定义一个自定义过滤器capitalize:

fromflaskimportFlask,render_template

app=Flask(__name__)

@app.template_filter()

defcapitalize(s):

returns.capitalize()

@app.route(/)

defindex():

user={username:张三,email:zhangsan@}

returnrender_template(index.html,user=user)

在index.html中使用这个过滤器:

!DOCTYPEhtml

html

head

title用户信息/title

/head

body

h1欢迎,{{user.username|capitalize}}!/h1

p您的邮箱是:{{user.email|upper}}/p

/body

/html

3.2描述

在上面的例子中,我们定义了一个自定义过滤器capitalize,并使用@app.template_filter()将其注册到Flask应用中。在模板中,我们使用|符号来应用过滤器,如{{user.username|capitalize}}将user.username的值转换为首字母大写。

4模板宏

模板宏允许我们在模板中定义可重用的代码片段,类似于函数。这可以减少代码重复,提高模板的可读性和可维护性。

4

您可能关注的文档

文档评论(0)

kkzhujl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档