本博文源于Flask基础,旨在讲解如何用Flask渲染网页模板
实验效果 核心思路flask是利用了Jianjia2模板,只需要知道flask如何调用Jinjia2即可。Flask提拱的render_template函数把Jinjia2模板引擎集成到了程序中,render_template函数第一个参数是模板的文件名。随后的参数就是个键值对,表示模板中变量对应的键值对。这里使用一个例子。
核心代码from flask import Flask,render_template
app = Flask(__name__)
# 视图函数
@app.route('/')
def hello_world():
return render_template('index.html')
@app.route('/user/')
def show_user_profile(username):
# 显示该用户名的用户信息
return render_template('user.html',name=username)
if __name__ == '__main__':
app.run(debug=True)
Jinjia中的变量
刚才使用的变量{{name}},现在学习一下常用的字典取出值的变量
从字典中取一个值:{{mydict['key']}}.
从列表中取一个值:{{mylist[3]}}.
从列表中取一个带索引的值:{{ mylist[myinvar]}}.
从对象的方法中取一个值:{{myobj.somemethod()}}.
同样也可以用过滤器
Hello,{{name|capitalize}}
常用过滤器
| 名称 | 说明 |
|---|---|
| safe | 渲染时不转义 |
| capitalize | 把值的首字母转换成大写,其他字母转换成小写 |
| lower | 把值转换成小写形式 |
| upper | 把值转换成大写形式 |
| title | 把值中每个单词的首字母都转换成大写 |
| trim | 把值的首尾空格去掉 |
| striptags | 渲染之前把值中所有的HTML标签都删掉 |
| safe | 渲染时不转义 |
控制结构包括条件控制,循环控制
{% if user %}
Hello, {{user}}!
{% else %}
Hello,Stranger!
{% endif %}
循环结构
-
{% for comment in comments %}
- {{ comment }} {% endfor %}
{% macro render_comment(comment)%}
-
{% for comment in comments %}
{{ render_comment(comment)}}
{% endfor %}
重复使用宏
{% import 'macros.html' as macros %}
-
{% for comment in comments %}
{{ macros.render_comment(comment)}}
{% endfor %}`在这里插入代码片`
{% include 'common.html'%}
模板继承
{% block head %}
{%block title%}{% endblock %}-My Application
{% block body %}
{% endblock %}
衍生模板
{% extends "base.html"%}
{% block title %}Index{%endblock %}
{% block head %}
{{super()}}
{% endblock %}
{%block body%}
Hello,World
{% endblock %}
总结
flask作为轻量级框架,挺不错的。



