Flask模板引擎之Jinja2语法介绍

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日

相关文章

  • 详解Flask Session 会话的使用方法

    Flask Session 是 Flask 框架中处理会话的标准机制。它是一种服务器端状态管理机制,可用于跟踪用户的活动并在不同请求之间保留数据。 在本篇文章中,我们将介绍 Flask Session 的核心概念、使用方法和必要知识点。我们将通过一个实例程序进行演示,代码示例已经包含在下文中。 安装 Flask-Session 扩展 安装 Flask-Ses…

    Flask 2023年3月13日
    00
  • Flask框架实现debug模式下计算pin码

    下面是详细讲解 Flask 框架实现 debug 模式下计算 pin 码的完整攻略。 1. 确认 Flask debug 模式开启 在使用 Flask 框架进行开发时,可以通过设置 Flask 的 debug 属性来开启 debug 模式。在 debug 模式中,Flask 会自动将错误信息以及堆栈跟踪信息输出到浏览器中,方便开发过程中调试。在 Flask …

    Flask 2023年5月16日
    00
  • 手把手教你利用Python创建一个游戏窗口

    我很乐意为你讲解如何利用Python创建一个游戏窗口的完整攻略。请注意,为了让回答更加易于阅读,下文将使用标题、代码块等Markdown格式进行排版。 准备工作 在创建游戏窗口之前,我们需要安装pygame库,该库可以帮助我们方便地创建游戏窗口。你可以使用以下命令在终端中安装该库: pip install pygame 安装完成后,我们可以开始创建游戏窗口了…

    Flask 2023年5月16日
    00
  • python爬取NUS-WIDE数据库图片

    下面为您介绍“python爬取NUS-WIDE数据库图片”的完整攻略,包含两条示例说明。 简介 NUS-WIDE是一个包含269,648张图片的数据库,图片来源于Flickr社交网站。这些图片被手工标注为38个不同的标签。这个数据库可以用于图像检索、多标签分类、语义注释等领域的研究。 在使用NUS-WIDE数据库进行研究时,我们通常需要把图片下载到本地。本文…

    Flask 2023年5月15日
    00
  • Python编程flask使用页面模版的方法

    一、使用页面模板 Flask使用Jinja2作为默认的模板引擎。Jinja2是一个现代的模板引擎,可以方便地生成HTML、XML或其他格式的文档。使用Jinja2模板引擎可以快速生成静态页面,提高开发效率。 在项目根目录下新建一个templates文件夹,这个文件夹存放我们的模板文件。然后在模板文件夹下新建一个HTML文件作为模板文件。 示例一:一个简单的模…

    Flask 2023年5月15日
    00
  • Python flask路由间传递变量实例详解

    下面我来详细讲解一下“Python flask路由间传递变量实例详解”的完整攻略。 一、什么是 Flask 路由 路由是 Web 应用程序中的一个术语,用于指定应用程序如何响应对特定端点的客户机请求。在 Flask 中,路由是与 URL 绑定的响应函数。 下面是一个定义路由的基本语法: @app.route(‘/path/’) def function_na…

    Flask 2023年5月15日
    00
  • 详解vue-admin和后端(flask)分离结合的例子

    下面我将为您详细讲解如何使用flask和vue-admin进行前后端分离,并给出两个示例说明。 背景 前端开发中,随着前端框架的不断推陈出新,后端的开发出现了一种趋势,就是将前端和后端进行分离。 准备工作 在使用flask和vue-admin分离前,有几个准备工作: 安装flask 安装vue-cli 安装vue-admin 具体安装方法这里不再赘述,可以在…

    Flask 2023年5月16日
    00
  • 一次python-flask蓝图的踩坑记录

    一次Python-Flask蓝图的踩坑记录 在编写Flask应用时,蓝图Blueprint是一种非常强大的组织代码结构的方式。但是使用蓝图Blueprint时也容易出现一些问题,本文就是从作者亲身经历的两个问题,详细讲解Python-Flask蓝图的使用注意事项。 第一个问题:Flask应用前缀设置不正确 在使用Flask应用时,我们需要将Blueprint…

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