Flask-模板渲染与继承
发布日期:2021-05-09 02:17:13 浏览次数:18 分类:博客文章

本文共 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 文件夹里寻找模板,requestsessiong对象以及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%}

 

上一篇:Flask-request对象
下一篇:MySQL数据库与python交互

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年05月01日 08时34分08秒