Python Flask Web 第四课 —— 模板引擎Jinja2

1. 基本介绍

形式最为简单的 Jinja2 模板是一个包含响应文本的文件。

templates/index.html

<h1>Hello World!</h1>

既然是模板,自然也可包含由变量表示的动态部分:

templates/user.html

<h1>hello, {{ name }}! </h1>

1.1 核心 api

>> from jinja2 import Template
>> t = Template('hello {{ name }}')
>> t.render(name='Zhang')
'hello zhang'

2. 控制结构

Jinja2 提供了多种控制结构,用以改变模板的渲染流程。

2.1 条件控制

{% if user %} 
    Hello, {{ user }}!
{% else %}
    Hello, Stranger!
{% endif %}

2.2 循环

<ul>
    {% for comment in comments %}
        <li>{{ comment }}</li>
    {% endfor %}
</ul>

3. 一个基准模板及其衍生模板

block 的类型:

  • (1)title
  • (2)head
  • (3)body
  • (4)navbar
  • (5)scripts
  • (6)content
  • (7)page_content

base.html

<html>
    <head>
        {% block head %}
        <title>{% block title %}{% endblock %} - My Application</title>
        {% endblock %}
    </head>

    <body>
        {% block body %}
        {% endblock %}
    </body>
</html>

block 标签定义的元素可在衍生模板中修改。上述模板中定义了,head、title 和 body 的块(block)。注意,title 需要包含在 head 中。

在此模板上,我们可对其进行衍生、拓展或者说继承。

{% extends "base.html" %}
{% block title %} Index {% endblock %}
{% block head %}
    {{ super() }}
    <style>
    </style>
{% endblock %}
{% block body %}
<h1> Hello, World!</h1>
{% endblock %}

extends 指令声明这个模板衍生自 base.html。在 extends 指令之后,基模板中的3个块(title、head、body)被重新定义,模板引擎将其插入适当的位置。注意新定义的 head 块,在基模板中其内容不是空的,所以使用 super() 获取原来的内容和。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值