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-SocketIO服务端安装及使用代码示例

    下面是关于“Flask-SocketIO服务端安装及使用代码示例”的完整攻略。 安装Flask-SocketIO 首先要安装Flask-SocketIO模块,可以使用pip直接安装: pip install flask-socketio 或者,可以在项目的requirements.txt中添加一行: flask-socketio==5.1.0 使用示例1 下…

    Flask 2023年5月16日
    00
  • 详解Flask框架中Flask-Login模块的使用

    详解Flask框架中Flask-Login模块的使用 什么是Flask-Login模块 Flask-Login是一个针对Flask的第三方模块,它提供了用户密码验证和用户会话管理的功能。它允许您在Flask应用程序中轻松实现用户认证和授权系统。 Flask-Login模块的安装 在开始使用Flask-Login模块之前,您需要先安装它。你可以使用pip命令来…

    Flask 2023年5月15日
    00
  • Flask框架学习笔记之表单基础介绍与表单提交方式

    Flask是Python语言中一个非常流行的轻量级Web应用框架,适合搭建小型项目或者功能简单的应用,下面是关于Flask表单基础的介绍和表单提交方式的攻略。 一、表单基础介绍 Web应用中表单是一种常见的接口元素。表单允许用户通过交互式方式输入信息并向服务器提交数据。在Flask中,可以使用Flask-WTF插件来构建和处理表单。 首先需要安装Flask-…

    Flask 2023年5月16日
    00
  • python使用flask与js进行前后台交互的例子

    下面就是详细讲解“python使用flask与js进行前后台交互的例子”的完整攻略。 首先我们需要搭建一个基于Flask框架的web应用,Flask是一种简单而灵活的python web框架,有很好的扩展性,适合中小型web项目的开发。 搭建Flask框架: from flask import Flask, request, jsonify, render_…

    Flask 2023年5月16日
    00
  • Flask交互基础(GET、 POST 、PUT、 DELETE)的使用

    Flask是一种轻量级Web框架,它具备良好的扩展性和易用性,可用于构建RESTful API。在RESTful API中,我们常用的HTTP协议方法有GET、POST、PUT、DELETE等。下面是Flask中如何使用这些方法的完整攻略。 1. GET方法 在Flask中,GET方法非常容易实现。我们只需定义一个路由,然后使用route()装饰器将其绑定到…

    Flask 2023年5月15日
    00
  • Python猜解网站数据库管理员密码的脚本

    首先,我想强调的是,攻击他人网站是不道德且违法的行为。在任何情况下,我们都不应该尝试侵入他人网站或服务,以防止引起不必要的后果。 现在,让我们来看一下如何创建一个Python脚本来尝试破解一个Web应用程序数据库管理员密码的攻击。我们将使用Python编程语言,与SQL注入攻击相结合来实现这个目标。 步骤如下: 使用Python requests库发送POS…

    Flask 2023年5月16日
    00
  • python之sqlalchemy创建表的实例详解

    首先,需要明确的是SQLAlchemy是一个Python编写的关系型数据库框架,可以方便地对数据库进行操作。在这样一个框架中创建表格非常容易,下面我将详细介绍如何使用SQLAlchemy创建一个表格。 环境搭建 在开始创建表格之前,你需要先安装SQLAlchemy模块。可以在命令行中输入以下命令安装: pip install sqlalchemy 依赖库安装…

    Flask 2023年5月16日
    00
  • 用sqlalchemy构建Django连接池的实例

    首先,需要明确一点,sqlalchemy是Python中最流行的ORM(对象关系映射器)之一,而Django最常用的ORM是自带的ORM。虽然可以通过某些方式让Django使用sqlalchemy,但是在大部分情况下直接使用Django自带的ORM是更好的选择。所以,以下将介绍如何使用Django自带的ORM来构建连接池。 安装数据库连接池 在Python中…

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