
本文共 1573 字,大约阅读时间需要 5 分钟。
一.模板渲染
使用render_template()方法来渲染模板。第一个参数是模板名字符串,模板变量以关键字参数的方式传入。
这里有一个展示如何渲染模板的简例:
#coding:utf-8from flask import Flask,render_templateapp = Flask(__name__)@app.route('/hello/')@app.route('/hello/')def hello(name=None): return render_template('hello.html', name=name)if __name__ == '__main__': app.run()
Flask 会在 templates 文件夹里寻找模板,request、session、g对象以及get_flashed_messages()函数不需要作为参数传入传入,在模板里可以直接访问。此外,模板的自动转义功能默认是开启的,所以如果传入的变量包含 HTML ,它将会被自动转义。如果你能信任一个变量,并且你知道它是安全的,你可以用 Markup 类或 |safe 过滤器在模板中把它标记为安全的。以name变量为例,
Markup类的使用:
# coding:utf-8from flask import Flask,render_template,Markup@app.route(/test/)def test(name=None): return render_template('test.html',name = Markup(name))
二、模板继承
模板继承允许你创建一个基础的骨架模板, 这个模板包含您网站的通用元素,并且定义子模板可以重载的 blocks 。
基础模板base.html
{% block head %}{% block title %}{% endblock %} - My Webpage {% endblock %}{% block content %}{% endblock %}
子模板负责填充空白的 block,基础模板使用{% block %} 标签定义了四个子模板可以重载的块。block标签所做的所有事情就是告诉模板引擎: 一个子模板可能会重写父模板的这个部分。
子模板test.html
{% extends "layout.html" %}{% block title %}Index{% endblock %}{% block head %} {{ super() }} {% endblock %}{% block content %}Index
Welcome on my awesome homepage.{% endblock %}
{% extends %}是这个例子的关键,它会告诉模板引擎这个模板继承自哪一个模板, 模板引擎分析这个模板时首先会定位其父模板。extends 标签必须是模板的首个标签。如果改写父模板block标签里的内容,使用标签{% block 块名%} 添入的新内容 {% endblock% },如果改写父模板block是想在原有基础上添加新内容,则可以使用{{ super() }}来继承,{% block 块名%} {{ super() }} 添入的新内容{% endblock%}
发表评论
最新留言
关于作者
