Flask是一款轻量级的Python Web框架,相比于Django,其更适合于快速开发产品原型,只需要很少的代码量就可以构建一个Web项目。

在实践经验中碰到过很多问题踩过不少坑,在此总结记录一个可用的项目结构实例。

安装

一般而言,推荐每个项目都构建虚拟环境,因为同一台服务器可能运行多个不同的项目,每个项目需要的包版本可能不同,有潜在的兼容性问题。

1
2
3
4
5
$ mkdir /project/flask
$ cd /project/flask
$ virtualenv env
$ source env/bin/activate
$ (env) pip install flask 

Flask安装至项目目录的虚拟环境中,不会对系统其他位置产生影响。

Flask初探

接下来我们搭建一个最简单的Web服务器:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# -*- coding: utf-8
# hello.py

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

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

执行python hello.py,访问http://localhost:5000

最简单的服务器搭建完成,如果需要开发增加更多功能,可直接修改这份文件。

但是随着项目进展,功能会越来越多,过多代码堆砌在一个文件的方式显然不可取,按照如下结构拆分这个应用,便于组织。

1
2
3
4
5
6
项目文件目录
├── app
│   ├── __init__.py
│   └──  views.py
├── gunicorn.conf
└── run.py

其中run.py是程序执行入口,gunicorn.conf是配置文件,方便后期部署,views.py存放所有的路由。

实例代码:

1
2
3
4
5
# run.py
from app import app

if __name__ == '__main__':
    app.run()
1
2
3
4
5
6
7
# views.py
from app import app


@app.route('/', methods=['GET', 'POST'])
def index():
    return 'Hello World!'
1
2
3
4
5
6
# __init__.py
from flask import Flask

app = Flask(__name__)

from app import views

运行python run.py,访问http://localhost:5000,结果和上面的程序一样。

这种项目结构更为清晰,类似于MVC框架,可以十分快速地完成所需功能,一些小型项目使用Flask足矣。


Changelog:

  • 2017-03-26: 增加图片