Flask模板引擎之Jinja2语法介绍

yizhihongxing

Flask模板引擎之Jinja2语法介绍

在Flask中,Jinja2是为构建动态web应用程序提供的一个模板引擎,可以轻松地将应用程序与HTML(或其他文本)集成,并在呈现页面之前修改动态内容。

变量

在Jinja2中,使用双大括号来包含变量名,如 {{ variable_name }}

<!DOCTYPE html>
<html>
  <head>
    <title>Flask Template Engine Jinja2 Example</title>
  </head>
  <body>
    <h1>Welcome {{name}}, to Flask Template Engine Jinja2 Example</h1>
  </body>
</html>

在Flask应用程序中,可以使用 render_template 函数来向模板传递变量。

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', name='John')

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

控制结构

条件

使用 {% if %}{% endif %} 来执行条件操作。

{% if condition %}
  <p>Condition is True</p>
{% else %}
  <p>Condition is False</p>
{% endif %}

循环

使用 {% for %}{% endfor %} 进行循环。

{% for item in items %}
  <p>{{ item }}</p>
{% endfor %}

可以使用 {% for %}...{% else %}...{% endfor %} 来定义循环最后一项的处理方式,还可以使用 loop.indexloop.index0 来获取当前迭代的索引,分别是从1和0开始。

{% for item in items %}
  <p>{{ loop.index }}: {{ item }}</p>
{% else %}
  <p>No items to display.</p>
{% endfor %}

使用 {% macro %}{% endmacro %} 定义宏。

{% macro render_item(item) %}
  <p>{{ item }}</p>
{% endmacro %}

然后在需要使用的地方使用 {{ macro_name(args) }} 命令调用宏。

{% for item in items %}
  {{ render_item(item) }}
{% endfor %}

模板继承

使用 {% extends "parent_template.html" %} 来进行模板继承。

<!DOCTYPE html>
<html>
  <head>
    {% block head %}
      <title>{% block title %}Flask Template Engine Jinja2 Example{% endblock %}</title>
    {% endblock %}
  </head>
  <body>
    {% block content %}
      <h1>Welcome, to Flask Template Engine Jinja2 Example</h1>
    {% endblock %}
  </body>
</html>

在子模板中可以重写父模板中的模块。

{% extends "base.html" %}

{% block title %}Home{% endblock %}

{% block content %}
  <h2>Welcome!</h2>
  <p>This is my home page.</p>
{% endblock %}

示例

{% extends "base.html" %}

{% block title %}Articles{% endblock %}

{% block content %}
  {% if articles %}
    <ul>
      {% for article in articles %}
        <li><a href="{{ url_for('article', id=article.id) }}">{{ article.title }}</a></li>
      {% else %}
        <li>No articles to display.</li>
      {% endfor %}
    </ul>
  {% endif %}
{% endblock %}
{% macro render_comment(comment) %}
  <div class="comment>
    <h3>{{ comment.author }}</h3>
    <p>{{ comment.content }}</p>
  </div>
{% endmacro %}

{% extends "base.html" %}

{% block title %}Article {{ article.id }}{% endblock %}

{% block content %}
  <h2>{{ article.title }}</h2>
  <p>{{ article.content }}</p>

  {% if comments %}
    {% for comment in comments %}
      {{ render_comment(comment) }}
    {% else %}
      <p>No comments to display.</p>
    {% endfor %}
  {% endif %}
{% endblock %}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flask模板引擎之Jinja2语法介绍 - Python技术站

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

相关文章

  • 详解Python的Flask框架中生成SECRET_KEY密钥的方法

    Flask 是一个使用 Python 编写的轻量级 Web 开发框架。在使用 Flask 开发 Web 应用时,通常需要生成 SECRET_KEY 密钥用于加密 Cookies、Session 等数据。以下是详解 Flask 生成 SECRET_KEY 密钥的方法。 方法一:使用 Flask 自带的生成密钥方法 在 Flask 中,可以使用 os.urand…

    Flask 2023年5月16日
    00
  • flask框架自定义过滤器示例【markdown文件读取和展示功能】

    下面就对“flask框架自定义过滤器示例【markdown文件读取和展示功能】”进行详细讲解,包括其中涉及的两条示例说明。 什么是自定义过滤器? Flask框架提供了过滤器的功能,可以在试图中过滤模板变量的值。默认情况下Flask提供了一些常用的过滤器,如safe过滤器、striptags过滤器等,但是有些场景下需要自定义过滤器,这时候就需要使用到自定义过滤…

    Flask 2023年5月15日
    00
  • python中Flask Web 表单的使用方法介绍

    下面是 Python 中 Flask Web 表单的使用方法介绍: Flask Web 表单 Flask Web 表单(Flask Web Forms)是 Flask 框架的一个扩展,它提供了简单易用的 API 来处理 Web 表单。使用 Flask Web 表单,可以轻松地编写处理用户表单的代码并实现表单验证。 安装 Flask Web 表单 安装 Fla…

    Flask 2023年5月15日
    00
  • Python Flask前后端Ajax交互的方法示例

    这里是关于“Python Flask前后端Ajax交互的方法示例”的完整攻略: 1. 简介 Flask是一个轻量级的Web框架,常被用于快速构建Web应用程序。在Web应用程序中,我们经常需要使用Ajax技术来实现前后端数据交互。本文将介绍使用Flask框架实现前后端Ajax交互的方法。 2. 示例一:实现前后端Ajax交互 2.1 准备工作 首先,我们需要…

    Flask 2023年5月15日
    00
  • 用Python的Flask框架结合MySQL写一个内存监控程序

    要用Python的Flask框架结合MySQL写一个内存监控程序,需要完成以下步骤: 安装Flask和MySQL模块 在命令行中输入以下命令: pip install Flask pip install mysql-connector-python 创建MySQL数据库 在MySQL中创建一个名为“memory_monitor”的数据库,并在其中创建一个名为…

    Flask 2023年5月16日
    00
  • 详解Flask HTTP请求的4种方法

    Flask是一个轻量级Web应用程序框架,使用Python编写,可用于构建RESTful API。在Flask中,HTTP方法是实现RESTful API的重要组成部分。因此,在本文中,我们将深入探讨Flask中的HTTP方法,并提供代码示例。 Flask提供了以下HTTP方法: Flask GET方法 GET方法用于从服务器获取数据。它没有请求体,所有参数…

    Flask 2023年3月13日
    00
  • 基于go-cqhttp与Flask搭建定制机器人项目实战示例

    下面我将详细讲解“基于go-cqhttp与Flask搭建定制机器人项目实战示例”的完整攻略,这个过程中包含两条示例的说明。 简介 本攻略将介绍使用go-cqhttp和Flask两个工具搭建一个定制的QQ机器人项目。其中第一条示例将展示如何使用go-cqhttp和Flask来实现一个抢购机器人,而第二条则将介绍如何使用这两个工具来实现一个天气查询机器人。 环境…

    Flask 2023年5月16日
    00
  • 详解flask入门模板引擎

    下面我将为您详细讲解“详解Flask入门模板引擎”的完整攻略。 什么是Flask模板引擎? Flask模板引擎是使用Flask框架来构建网站时,用来呈现动态HTML页面的工具。它允许开发者使用HTML,CSS,JavaScript等静态文件和模板语法结合生成动态页面。 如何在Flask中使用模板引擎? 首先我们需要安装Flask模板引擎,通过pip包管理器安…

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