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