Flask是一个轻量级的web框架。
示例:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def main():
return '<h1>hello world</h1>'
if __name__ == "__main__":
app.run()
启动Flask Server:
$ flask run --port 18888 --host 0.0.0.0
--port
用来指定服务的端口。如果要使服务一直运行,在前面加上nohup
。
如果要设置成Debug
模式,执行:export FLASK_DEBUG=1
Windows用 set
来设定环境变量。
参数路由
Flask支持在路由中添加参数,默认类型是string
,也可以显式地声明为int
。
@app.route('/<id>')
def func1(id):
id = int(id) ** 2
return str(id)
# 只会匹配整数的路由类型
@app.route('/<int:id>')
def func2(id):
return str(id ** 2)
# 这时候的 url_path 是一个相对路径
@app.route('/<path:url_path>/')
def func3(url_path):
return 'path:%s' % url_path
请求方式
Flask默认是 GET
方法,使用 methods
参数指定更多的方法。
from flask import request
@app.route('/', methods=['POST', 'GET'])
def main():
if request.method == 'POST':
# 处理 POST 提交的表单
register_dict = request.form
username = register_dict['usrename']
password = register_dict.get('password')
if request.method == 'GET':
# 获取 GET 方法的参数
key = request.args.get("key")
对应的请求方法是:
import requests params = {'username': 'un', 'password': 'pwd'} r = requests.get(url, params=params) # GET data = {'username': 'un', 'password': 'pwd'} r = requests.post(url, data=data) # POST
响应
Flask视图函数返回的参数将组成用户收到的响应(response)。
第一个参数是响应字符串;第二个参数是状态码,Flask默认设为200,表明请求已被成功处理;第三个参数是由 HTTP 响应首部组成的字典。
@app.route('/')
def index():
# 返回 400 状态码,表示请求无效
return 'Bad Request', 400
响应有个特殊的类型,称为重定向。
from flask import redirect
@app.route('/')
def index():
return redirect('http://www.example.com')
还有一种特殊的响应由 abort
函数生成,用于处理错误。
from flask import abort
@app.route('/user/<id>')
def get_user(id):
if id == 0:
abort(404)
return 'hello', 200
我们可以自定义错误处理方式。
@app.errorhandler(404)
def page_not_found(error): # 自定义处理异常
return 'This page does not exist', 404
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。