您的位置:

详解 Flask 框架:从pip install flask到web应用整体架构

Python Flask 是一款基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎的微型 Web 框架。与 Django 相比,Flask 是更加轻量级的框架,但却可以应付大部分 Web 应用的需求。本篇文章希望通过对 pip install flask 这个命令的解释,阐述 Flask 的优势以及其在 web 应用整体架构中的应用。

一、安装和配置Flask环境

1、安装pip:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

2、通过 pip 安装 Flask:

pip install flask

3、通过以下代码测试 Flask 是否安装成功:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

如果不出意外,浏览器访问 http://127.0.0.1:5000/ 就会看到 "Hello, World!"。

二、Flask 框架的特性

1、简洁易用

Flask 框架设计之初就考虑到了易用性,其代码量很小,但是功能却非常强大。在 Flask 中,一些繁琐的操作都被封装在了简单易用的 API 中,只需要调用即可完成相应的操作。

2、轻量级

Flask 框架代码量少,没有其它框架复杂,入门非常容易。同时 Flask 还是一款轻量级的框架,不会引入过多的库和依赖,降低了网站维护和开发的难度。

3、灵活可扩展

通过 Flask Blueprint 和 Flask Extension,非常方便的为 Flask 添加新的功能。

4、支持 RESTful API 设计

RESTful 接口是一种流行的 Web 接口设计规范,对于前后端分离开发有着特别重要的意义。Flask 框架天生支持 RESTful 访问方式,极易扩展到这一协议。

三、Flask 的设计思想

1、WSGI/Jinja2

Flask 在 WSGI 服务器顶层和 Python 应用程序之间提供了一个中间层,也就是所谓的请求上下文(request context)。WSGI 是 Python Web 开发的标准,而 Jinja2 是 Flask 框架专用的模板引擎,也是 Python 中应用广泛的模板引擎之一。

2、视图函数

在 Flask 中,每个路由都通过函数来处理,这个处理函数就被称为视图函数。视图函数就是一个 Python 函数,当用户请求浏览器上的某个 URL 时,就会将代码中该视图函数与 URL 对应起来,并返回视图函数的执行结果给用户。

3、路由系统

在 Flask 中,路由就是 URL 和函数之间的映射关系,通过路由,用户可以直接访问某个 URL 与之对应的视图函数。

四、Flask应用的整体架构

1、工程目录结构

+--app
|   +--models
|   +--static
|   |   +--css
|   |   +--img
|   |   +--js
|   +--templates
|   |   +--includes
|   |   |   +--\_formhelpers.html
|   |   |   +--\_messages.html
|   |   +--layouts
|   |   |   +--base.html
|   |   +--admin
|   |   |   +--login.html
|   |   +--public
|   |   |   +--home.html
|   +--views
|   |   +--admin.py
|   |   +--common.py
|   |   +--public.py
+--requirements.txt
+--config.py
+--run.py

2、建立了一个 Flask 框架应用,首先需要定义应用的目录结构。一般地,我们假定要建立一个博客应用。

3、这个应用的目录结构是从一个核心源文件 flaskblog.py 开始扩展而来,主结构目录的命令是博客的名字,通常是分块的。

4、models 目录是用来放置应用的数据模型的。比如一篇文章的数据模型,一个用户的数据模型等等,对应上面工程目录的第一个模块。一般使用 SQLAlchemy 或者 MongoEngine 等 Python 库来调试模型。

5、views 目录是用来放置应用的视图函数。Flask 通过 URL 与图图函数之间进行映射关系的,每个 URL 请求都会映射到一个用 Flask 的视图函数处理的响应。

6、templates 目录主要用来存放应用的模板文件,也就是 HTML 文件,通过 render_template 函数来渲染对应模板。

7、static 目录通常用来存放应用使用到的静态文件,比如 CSS、JS 和图片等。

8、run.py 文件是程序的入口,我们通过它来启动应用。

五、Conclusion

Flask 可以说是 Python Web 开发的还都框架之一,蛇皮的代码风格、轻量级的设计、易于扩展等特点让 Flask 体验颇佳。相比 Django 等大型框架,Flask 的运行速度也更快,非常适合快速开发一些小型 Web 应用。