系统环境

MacOS 10.12.4
Python 3.6
Flask 0.12.1

在安装前, 请先安装virtualenv 并设置好py3.6的隔离环境, 以下操作均在该环境呢

virtualenv 的安装使用请参考https://www.u3v3.com/ar/1248

安装

在py3.6的环境下, 执行

pip install flask

即可,

如果是系统默认的环境中安装的话, 需要sudo权限

sudo pip install flask

这样, 我们就将flask安装在了对应的环境中,

验证

进入ipython 中,

In [46]: import flask

In [47]: flask.__version__
Out[47]: '0.12.1'

可以看出, 我们的flask的版本是0.12.1, 也是最新的稳定版

Flask 运行

在Flask的官网首页, 我们可以看到最简单的一个应用服务代码

from flask import Flask

app = Flask("Test")

@app.route('/')
def hello():
    return 'hello world'

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

启动服务

export FLASK_DEBUG=1 # 设置debug环境变量, 允许文件更改自动加载以及debug输出
python run.py # 启动服务

可以看到输出如下

 * Running on http://127.0.0.1:9999/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 209-177-874

我们打开浏览器, 输入http://127.0.0.1:9999, 就能看到输出的hello world

视图展示

以上仅仅返回了一个字符串展示, 如何进行模板渲染呢

from flask import Flask
from flask import render_template # 加载视图模块

app = Flask("Test")

@app.route('/')
def hello():
    return 'hello world'

@app.route('/hello')
def show_page():
    return render_template('hello.html') # 加载视图

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

templates/hello.html

<h1>Hello World</h1>

参数获取

GET参数

@app.route('/hello/<name>')
def show_page(name=None):
    return render_template('hello.html', name=name)

通过在route path中定义的方式, 可以将参数传递到函数中

POST参数

from flask import request
@app.route('/post/hello', methods=['POST'])
def post():
    name = request.form.get('name', 'default_name') # POST的表单数据获取
    return render_template('hello.html', name=name)

视图展示

flask 默认Jinja2模板引擎, 中文文档http://docs.jinkan.org/docs/jinja2/,

该模板引擎入门简单, 容易掌握, 这里仅展示 name 变量展示

<h1>Hello {{name}}</h1>

{{name}} 负责渲染name变量展示

效果如下

参考:

Flask 中文文档

Jinja2 中文文档

right