flask 简介
Flask是一个用Python编写的Web应用程序微型框架,基于Werkzeug WSGI工具包和Jinja2模板引擎。
Werkzeug是一个WSGI(Web Server Gateway Interface,Web服务器网关接口WSGI))工具包,实现了请求、响应对象等,用于构建web框架。jinja2是Python的一个流行的Web模板引擎,将模板与特定数据源组合以呈现动态网页。
flask 基础框架
flask主要用于快速的web 服务器搭建。如下图,
- 当用户访问URL,浏览器生成对应的http请求发向web服务器
- web 服务器(flask搭建)接收到请求, flask可根据请求的URL 执行对应的视图函数,获取返回值生成响应
- 响应经过web服务器转换生成http响应,并传递到客户端浏览器,浏览器经过html/css/javascript解析渲染后呈现给用户。
flask 安装及使用
示例中环境为ubuntu 16.04 +python2
使用pip 安装
pip install flask
如下示例,可通过http://yourIP:5001/hello 与http://yourIP:5001/index 登录获取回显
from flask import Flask
app = Flask(__name__) #实例化flask
@app.route('/hello') #hello路由函数
def hello():
return 'hello world'
@app.route('index') #index 路由函数
def index():
return 'index page'
if __name__ == ‘__main__’:
app.run(host = '0.0.0.0', port = '5001', debug = True) #启动flask
示例中,通过在单个文件中定义多个路由函数能实现不同页面的请求回显。 但针对业务比较复杂的项目,在单文件下处理route 会使得维护变得困难。在这种情况下, 很显然需要对flask 进行模块化拆分,flask 中使用蓝图可实现该需求。
蓝图理解及应用
一个较为完整的flask 包含了前台模板(html)、静态文件(img等)、视图(route)函数。蓝图可以认为将一个大型flask 根据业务划分成不同的小型flask,各自维护一套模块、静态文件、视图函数等,即蓝图是一个模块化的类。
- 创建蓝图对象,并注册蓝图路由
demo1.py
from flask import Blueprint
demo1 = Blueprint('demo1',__name__,template_folder='templates')
@demo1.route('/')
def index ():
return ‘blueprint demo1’
demo2.py
from flask import Blueprint
demo2 = Blueprint('demo2',__name__,template_folder='templates')
@demo2.route('/')
def index():
return 'blueprint demo2'
- 在flask实例中注册蓝图
app = Flask(__name__)
app.register_blueprint(more.more,url_prefix='/demo1')
app.register_blueprint(more.more,url_prefix='/demo2')
如下为应用蓝图后的flask项目开发目录
1. flask-project-demo/
2. |-config.py #环境配置
3. |-manage.py #flask 启动文件
4. |-demo/
5. | |-__init__.py
6. | |- scripts/ # 后台源代码包
7. | |-__init__.py
8. | |-test1.py #示例1
9. | |-test2.py #示例2
10. | |-views/ #flask 视图函数
11. | |-__init__.py
12. | |-demo1.py #示例1
13. | |-demo2.py #示例2
14. | |-static/
15. | |-js/ #js文件目录
16. | |-css/ #css文件目录
17. | |-img/ #图片目录
18. | |-templates/ #前台页面模板目录
19. | |-demo1.html #示例1
20. | |-demo2.html #示例2