Python的Flask框架标配模板引擎Jinja2的使用教程

好的。以下是“Python的Flask框架标配模板引擎Jinja2的使用教程”的完整攻略:

什么是Jinja2

Jinja2是Flask框架默认的模板引擎。它是一个基于Python的高级模板引擎,它的设计初衷是为了和Flask框架紧密结合,因此其语法与Python非常相似。

Jinja2支持继承、过滤器、变量、控制结构等常见的模板引擎功能。同时也支持自定义过滤器、函数等扩展功能。

Jinja2模板的使用方法

基本语法

Jinja2模板语法使用{{}}表示变量,{% %}表示控制结构,{# #}表示注释。

<!DOCTYPE html>
<html>
  <head>
    <title>Flask + Jinja2 示例</title>
  </head>
  <body>
    <h1>Hello, {{ name }}!</h1>
  </body>
</html>

上述示例中,{{ name }} 表示一个变量,它的值可以在代码中进行指定。例如:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def hello_world():
    return render_template('hello.html', name='Jinja2')

if __name__ == '__main__':
    app.run()

过滤器

Jinja2模板还支持过滤器,可以对变量进行处理。例如:

<!DOCTYPE html>
<html>
  <head>
    <title>Flask + Jinja2 示例</title>
  </head>
  <body>
    <h1>{{ name|join(', ') }}</h1>
  </body>
</html>

上述示例中,name 变量通过 |join(', ') 过滤器实现以逗号分隔每个单词。

控制结构

Jinja2模板支持 if/else、for 等控制结构。例如:

<!DOCTYPE html>
<html>
  <head>
    <title>Flask + Jinja2 示例</title>
  </head>
  <body>
    <ul>
      {% for item in items %}
        {% if item %}
          <li>{{ item }}</li>
        {% endif %}
      {% endfor %}
    </ul>
  </body>
</html>

上述示例中,items 是一个列表,在模板中使用 for 循环遍历列表,在遍历的过程中,使用 if 控制结构过滤掉空元素,最终输出列表中的每个元素到 HTML 页面上。

继承

Jinja2模板还支持模板继承,让我们可以更加优雅地组织我们的网站页面。例如:

base.html

<!DOCTYPE html>
<html>
  <head>
    <title>{% block title %}Flask + Jinja2 示例{% endblock %}</title>
  </head>
  <body>
    <div class="header">
      {% block header %}{% endblock %}
    </div>
    {% block content %}{% endblock %}
    <div class="footer">
      {% block footer %}{% endblock %}
    </div>
  </body>
</html>

child.html

{% extends "base.html" %}

{% block title %}Flask + Jinja2 子页面示例{% endblock %}

{% block header %}
  <h1>Flask + Jinja2 子页面示例</h1>
{% endblock %}

{% block content %}
  <p>这是子页面的内容。</p>
{% endblock %}

{% block footer %}
  <p>版权所有 © 2021</p>
{% endblock %}

上述示例中,child.html 继承了 base.html 模板,并在 block 中覆盖了父模板中的内容。

示例

示例1:变量和过滤器的使用

代码:

<!DOCTYPE html>
<html>
  <head>
    <title>Flask + Jinja2 示例</title>
  </head>
  <body>
    <h1>{{ name|title }}</h1>
    <p>{{ description|truncate(30, True) }}</p>
    <ul>
      {% for item in items %}
        {% if item %}
          <li>{{ item }}</li>
        {% endif %}
      {% endfor %}
    </ul>
  </body>
</html>

flask部分:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    name = 'james'
    description = 'Hello, this is a description of the new site'
    items = ['item1', 'item2', 'item3']
    return render_template('example.html', name=name, description=description, items=items)

if __name__ == '__main__':
    app.run()

上述示例中,定义了变量 name、description、items 并在 Flask 中 render_template 函数生成 HTML 页面,展示了变量和过滤器的使用。

示例2:页面继承

代码:

base.html

<!DOCTYPE html>
<html>
  <head>
    <title>{% block title %}Flask + Jinja2 示例{% endblock %}</title>
  </head>
  <body>
    <div class="header">
      {% block header %}{% endblock %}
    </div>
    {% block content %}{% endblock %}
    <div class="footer">
      {% block footer %}{% endblock %}
    </div>
  </body>
</html>

child.html

{% extends "base.html" %}

{% block title %}Flask + Jinja2 子页面示例{% endblock %}

{% block header %}
  <h1>Flask + Jinja2 子页面示例</h1>
{% endblock %}

{% block content %}
  <p>这是子页面的内容。</p>
{% endblock %}

{% block footer %}
  <p>版权所有 © 2021</p>
{% endblock %}

flask部分:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/child')
def child():
    return render_template('child.html')

if __name__ == '__main__':
    app.run()

上述示例中,child.html 继承了 base.html 模板,并在 block 中覆盖了父模板中的内容,Flask 中生成页面时会加载所有继承的模板并组合后输出。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python的Flask框架标配模板引擎Jinja2的使用教程 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Flask框架 CSRF 保护实现方法详解

    这是一篇讲解如何在 Flask 框架中实现 CSRF 保护的完整攻略。 什么是 CSRF? CSRF(Cross-site request forgery)是一种攻击技术,攻击者通过伪造一个请求,让用户在未意识到的情况下执行某些操作,比如更改密码、删除数据等。这种攻击方式常常被用于钓鱼、盗取用户信息等恶意行为。 如何在 Flask 中进行 CSRF 保护? …

    Flask 2023年5月15日
    00
  • flask-restful使用总结

    下面我将详细讲解“flask-restful使用总结”的完整攻略,包含两个示例。 一、总体概述 1. 什么是Flask-RESTful? Flask-RESTful是一个基于Flask构建的RESTful API扩展。它使得在Flask应用程序中开发RESTful API变得异常简单。 2. 使用Flask-RESTful的好处 使用Flask-RESTfu…

    Flask 2023年5月15日
    00
  • Python使用Flask框架获取当前查询参数的方法

    下面是关于“Python使用Flask框架获取当前查询参数的方法”的完整攻略: 什么是查询参数? 在网页中,我们经常需要向后端服务器发送一些请求,例如搜索、排序等请求。我们可以通过在请求的URL中添加查询参数来携带请求的信息。例如,搜索某个商品,我们可以使用如下的URL: https://example.com/search?q=iphone 在这个URL中…

    Flask 2023年5月16日
    00
  • Flask 使用工厂模式

    使用 Flask 的工厂模式,能够更好的管理应用程序的架构和配置,使得应用程序更加模块化。在接下来的攻略中,我将详细介绍 Flask 的工厂模式,并提供两个示例说明。 什么是工厂模式 在 Flask 中,工厂模式是一种应用程序工厂,可以使用它创建应用程序实例。使用工厂模式,可以更好的管理应用程序模块和配置。 通常情况下,使用 Flask 的 Hello, W…

    Flask 2023年5月15日
    00
  • Flask框架的学习指南之开发环境搭建

    下面是Flask框架的学习指南之开发环境搭建的完整攻略和两个示例说明。 概述 在学习Flask框架之前,需要先搭建好相应的开发环境。在这篇攻略中,我们将介绍如何搭建Flask开发环境。 步骤 安装Python 首先需要安装Python,官网下载地址为:https://www.python.org/downloads/ 安装pip 下载get-pip.py,官…

    Flask 2023年5月15日
    00
  • python http通信接口开发示例

    下面将详细讲解“python http通信接口开发示例”的完整攻略,包含两条示例说明。 示例一:Python实现简单的HTTP GET请求 1. 安装requests库 我们使用 requests 库来发送 http 请求。在 Windows 系统下,可以在命令行中执行以下命令安装: $ pip install requests 在 Linux 或 macO…

    Flask 2023年5月16日
    00
  • python实现查询IP地址所在地

    下面我来详细讲解一下“Python实现查询IP地址所在地”的完整攻略。主要分为以下几个步骤: 1. 确定数据来源 我们需要一个可以提供IP地址所在地数据的第三方数据源。常见的数据源有淘宝IP地址库、纯真IP地址库等。以淘宝IP地址库为例,在 https://ip.taobao.com/ 找到“API文档”,我们可以看到提供的查询API地址是: http://…

    Flask 2023年5月16日
    00
  • Python的Flask站点中集成xhEditor文本编辑器的教程

    以下是详细的Python Flask站点中集成xhEditor文本编辑器的教程,包含两个示例: 示例1:使用xhEditor自带的示例代码 步骤1:下载xhEditor插件 在官网(http://xheditor.com)下载最新版的xhEditor插件,并解压到本地目录中。 步骤2:准备Flask代码 以下是一个简单的Flask app的代码示例。 fro…

    Flask 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部