Skip to content

使用 Jinja2 模板

Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。
官网地址:http://docs.jinkan.org/docs/jinja2/index.html

示例:

jinja
<title>{% block title %}{% endblock %}</title>
<ul>
{% for user in users %}
  <li><a href="{{ user.url }}">{{ user.username }}</a></li>
{% endfor %}
</ul>

1. 安装 Jinja2

bash
pip install Jinja2

2. 使用

咱们先新建一个 apps 目录,然后在 apps 目录中新建一个 templates 目录;用于存放 jinja2 模板文件

新建一个 apps/templates/index.html 文件:

jinja
{% for i in range(10) %}
  <h1>{{ msg }}</h1>
{% endfor %}

然后修改一下 server.py 文件:

python
from sanic import Sanic
from sanic import response
from jinja2 import Environment, PackageLoader

app = Sanic('MyAPP')
jinja2 = Environment(loader=PackageLoader('apps', 'templates'))


@app.get('/')
async def hello_world(request):
    template = jinja2.get_template('index.html')
    context = {
        'msg': 'Hello, world.'
    }
    html = template.render(**context)
    return response.html(html)


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

重点是这几个:

  1. jinja2 模板的引入

    python
    jinja2 = Environment(loader=PackageLoader('apps', 'templates'))
    # ...
    template = jinja2.get_template('index.html')
  2. 模板变量的传入

    python
    html = template.render(**context)
  3. 以 html 格式进行响应

    python
    return response.html(html)

此时再次访问 http://127.0.0.1:8000 就能看到 10 个比之前更大的 Hello, world.