`

Flask的Jinja2模板引擎 — 上下文环境(2nd)

阅读更多

      Flask每个请求都有生命周期,在生命周期内请求有其上下文环境Request Context。作为在请求中渲染的模板,自然也在请求的生命周期内,所以Flask应用中的模板可以使用到请求上下文中的环境变量,及一些辅助函数。本文就会介绍下这些变量和函数。

标准上下文变量和函数

请求对象request

request对象可以用来获取请求的方法”request.method”,表单”request.form”,请求的参数”request.args”,请求地址”request.url”等。它本身是一个字典。在模板中,你一样可以获取这些内容,只要用表达式符号”{{ }}”括起来即可。

在没有请求上下文的环境中,这个对象不可用。

会话对象session

session对象可以用来获取当前会话中保存的状态,它本身是一个字典。在模板中,你可以用表达式符号”{{ }}”来获取这个对象。

Flask代码如下,别忘了设置会话密钥哦:

模板代码:

在没有请求上下文的环境中,这个对象不可用。

全局对象g

全局变量g,用来保存请求中会用到全局内容,比如数据库连接。模板中也可以访问。

Flask代码:

模板代码:

g对象是保存在应用上下文环境中的,也只在一个请求生命周期内有效。在没有应用上下文的环境中,这个对象不可用。

Flask配置对象config

导入的配置信息,就保存在”app.config”对象中。这个配置对象在模板中也可以访问。

“config”是全局对象,离开了请求生命周期也可以访问。

url_for()函数

url_for()函数可以用来快速获取及构建URL,Flask也将此函数引入到了模板中,比如下面的代码,就可以获取静态目录下的”style.css”文件。

该函数是全局的,离开了请求生命周期也可以调用。

get_flashed_messages()函数

get_flashed_messages()函数是用来获取消息闪现的。这也是一个全局可使用的函数。

自定义上下文变量和函数

自定义变量

除了Flask提供的标准上下文变量和函数,我们还可以自己定义。下面我们就来先定义一个上下文变量,在Flask应用代码中,加入下面的函数:

函数返回的是一个字典,里面有一个属性”appname”,值为当前应用的名称。我们曾经介绍过,这里的”current_app”对象是一个定义在应用上下文中的代理。函数用”@app.context_processor”装饰器修饰,它是一个上下文处理器,它的作用是在模板被渲染前运行其所修饰的函数,并将函数返回的字典导入到模板上下文环境中,与模板上下文合并。然后,在模板中”appname”就如同上节介绍的”request”, “session”一样,成为了可访问的上下文对象。我们可以在模板中将其输出:

 

自定义函数

同理我们可以自定义上下文函数,只需将上例中返回字典的属性指向一个函数即可,下面我们就来定义一个上下文函数来获取系统当前时间:

我们可以试下在模板中将其输出:

上下文处理器可以修饰多个函数,也就是我们可以定义多个上下文环境变量和函数。

完整实例:

flask代码:

模板代码:

分享到:
评论

相关推荐

    SSTI漏洞学习(下)——Flask_Jinja模板引擎的相关绕过 .pdf

    在本文中,我们将深入探讨Flask框架使用的Jinja2模板引擎的SSTI漏洞及其绕过策略。 Flask是一个轻量级的Python Web应用框架,而Jinja2是它默认的模板引擎。Jinja2允许开发者通过模板语言来动态生成HTML或其他格式的...

    flask_jinja2_web.zip

    接着,创建一个基本的Flask应用,配置Jinja2为默认的模板引擎: ```python from flask import Flask app = Flask(__name__) app.jinja_env.trim_blocks = True app.jinja_env.lstrip_blocks = True ``` 这里设置了两...

    flask+jinja2+echarts模板案例.rar

    Flask是一款轻量级的Python Web框架,Jinja2则是一个强大的模板引擎,用于生成动态HTML页面,而Echarts则是一款由百度开发的开源JavaScript图表库,能够生成各种交互式的数据图表。接下来,我们将深入探讨这三个组件...

    python 利用jinja2模板生成html代码实例

    Jinja2是一个流行的模板引擎,用于Python编程语言,广泛用于Web开发框架如Flask和Django中。其核心功能是将数据与模板结合生成HTML页面或其他格式的文档。 在本文中,会通过实例代码详细解释如何使用Jinja2来生成...

    flask中jinja2使用全局变量

    flask中jinja2使用全局变量

    一个在Sublime Text3下使用Python-jinja2模板引擎将编写的Html模板编译为静态html文件的工具插件

    Jinja2是一个强大的模板语言,常用于Python web开发,如Flask和Django框架。通过Htmlc,开发者可以方便地在Sublime Text3环境中进行模板开发和预览,提高了工作效率。 **Jinja2 模板引擎** Jinja2是Python的一个...

    Flask 之 Jinjia2 模板引擎必知必会

    **Flask 与 Jinja2 模板引擎详解** Flask 是一个轻量级的 Python Web 开发框架,它的灵活性和简洁性使得开发者能够快速构建应用程序。在 Flask 中,我们通常会结合使用 Jinja2 模板引擎来处理视图渲染,实现动态...

    详解flask入门模板引擎

    在Flask中,常用的模板引擎是Jinja2。本文将详细介绍Flask的模板引擎使用方法和一些基本的语法知识。 首先,Flask框架通过模板引擎将数据嵌入到HTML模板中。模板文件通常以.html为后缀,它们是按照特定的规则书写的...

    适合初学者的python web网站,flask框架+jinja2模板+mysql让学习更简单,内容包括mysql的.zip

    本教程将围绕Flask、Jinja2模板引擎以及MySQL数据库展开,帮助初学者快速入门Python Web开发。 首先,我们要了解**Flask**。Flask是一个基于Python的微框架,适用于构建小型到中等规模的Web应用。它的核心功能包括...

    Python基于Flask, Jinja2的问答平台源码,类似知乎.zip

    2. **Jinja2模板引擎**:Jinja2是Flask推荐的HTML模板引擎,用于将动态数据和静态HTML结构结合,生成最终的网页。在问答平台上,Jinja2模板用于渲染用户界面,如登录注册页面、问题列表、问题详情页等。它支持条件...

    flask框架jinja2模板与模板继承实例分析

    总而言之,Flask框架配合Jinja2模板引擎提供了非常灵活的方式来构建Web应用。通过模板继承、装饰器、缓存策略以及路由控制,开发者可以轻松地实现丰富的Web应用功能。这些知识点对于希望在Python环境下快速开发Web...

    Flask:Flask模板引擎使用与HTML渲染.docx

    Flask:Flask模板引擎使用与HTML渲染.docx

    Flask模板简介.pdf

    Flask是一个用Python编写的轻量级Web应用框架,它使用Jinja2作为默认的模板引擎,Jinja2模板系统是由日本人开发的,它从Django的模板系统中汲取灵感,提供了与Django模板类似的功能,但也增加了一些额外的特性,比如...

    Flask + Jinja2 + Bootstrap 开发的招聘网站

    2. Jinja2:Jinja2是Python的一个强大且现代的模板引擎,与Flask紧密集成。在本项目中,Jinja2用于创建动态HTML页面。开发者可以定义模板文件,其中包含可替换的占位符,然后在后端通过传递数据来渲染这些模板。...

    Python-Jinja2是纯Python的模板引擎

    **Python-Jinja2模板引擎详解** Jinja2是一款强大的、高效且灵活的纯Python模板引擎,它是基于Python语言设计的,无需任何外部依赖。由Pallets团队开发,广泛应用于Web应用开发,如Flask框架中。Jinja2的设计灵感...

    Flask Web Development, 2nd Edition

    模板是HTML文件,其中可以包含动态内容,如变量和控制结构,Flask支持Jinja2模板引擎,这是一种强大而灵活的模板语言。 在实际开发中,Flask的应用通常会需要数据库支持。Flask通过SQLAlchemy或SQLite等库提供...

Global site tag (gtag.js) - Google Analytics