1. 介绍

Flask是一种使用Python 编写的轻量级Web应用框架, 实现了基础的核心, 用extension增加其他功能
它的WSGI工具箱采用Werkzeug, 模板引擎则使用Jinja2

2. 使用

2.1 路由

from flask import Flask
app = Flask(__name__)
@app.route("/url")
def handle_url:
    return "Something"

2.2 反向路由

from flask import url_for
url_for()

2.3 重定向

from flask import redirect
redicrect()

2.4 请求和响应

from flask import request
from flask import make_response

// 设置Cookie
response = make_response(url_for('index'))
response.set_cookie(name, json.dumps(dict))
// 获取Cookie
json.loads(request.cookies.get(name))

2.5 模板

flask.render_template

2.5.1 模板的基本使用

{{ value }}
分支语句
{% if something %}
...
{% else %}
...
{% endif %}
循环语句
{% for object in objects %}
...
{% endif %}

2.5.2 模板的继承

// 基类: base.html
...
{% block content %}
{% endblock %}
...
// 子类: child.html
{% extends "base.html" %}
{% block content %}
...
{% endblock %}

2.6 消息提示

from flask import flash
// 注意: 使用前需要配置app.secret_key
flash(strings)
*.html
{{ get_flashed_messages()[n] }}

2.7 异常

2.7.1 异常处理

@app.errorhandle(error_number)

2.7.2 抛出异常

from flask import abort
abort(error_number)

2.8 其他

jsonify用于返回json数据

3. 扩展

3.1 Flask-Script

用于执行外部脚本, 如连接数据库

flask_script.Manager

4. 部署

4.1 部署方案

系统: Linux(CentOS)
WSGI服务器: Gunicorn, uWSGI, CherryPy, Tornado, Gevent, mod_wsgi(Apache)
Web服务器: Nginx

Flask介绍-风君雪科技博客

4.2 常用工具

4.2.1 virtualenv

$ mkdir app
$ cd app/
$ virtualenv flask
New python executable in /home/user/app/flask/bin/python2
Also creating executable in /home/user/app/flask/bin/python
Installing setuptools, pip, wheel...done.

$ source flask/bin/activate
(flask) $
(flask) $ deactivate

4.2.2 Supervisor

命令: supervisorctl
配置: /etc/supervisor/supervisor/conf.d/app.conf

4.3.3 其他工具

DevOps, Fabric

4.3 Nginx配置

Nginx配置

参考:
<Flask框架和Flask-Script介绍>