Python开源Web框架Flask学习笔记
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。
简单环境搭建
软件安装
可以通过pip安装,确保机器已安装python-pip1
pip install flask
最小应用
新建hello.py,代码如下,保存后执行python hello.py,在浏览器访问localhost:5000即可显示1
2
3
4
5
6
7from flask import Flask
app = Flask(__name__)
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
其他技巧
运行参数
程序默认只能从本机访问,若要从其他机器远程访问,就需要使用参数启动程序
1 | app.run(host='0.0.0.0') |
若需要开启调试模式,可以使用参数:
1 | app.run(debug=True) |
路由与参数
- 路由方法:
1
2
3
4
5
6
def login():
if request.method == 'POST':
do_the_login()
else:
show_the_login_form() - 参数获取:
- form表单参数
1
2
3if request.method == 'POST':
name = request.form['username']
passwd = request.form['password'] - URL参数
1
2
3
4
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % username - GET参数
1
searchword = request.args.get('q', '')
- 文件上传
1
2
3
4
5
6
7
8from flask import request
from werkzeug import secure_filename
def upload_file():
if request.method == 'POST':
f = request.files['the_file']
f.save('/var/www/uploads/' + secure_filename(f.filename))
- Cookies的读写:
1
2
3username = request.cookies.get('username')
resp = make_response(render_template(...))
resp.set_cookie('username', 'the username') - 模板使用:
1
2
3
4
5from flask import render_template
def hello(name=None):
return render_template('hello.html', name=name) - 跨域支持:
要支持跨域的话只需要做全局配置,安装flask_cors加入以下代码:1
pip install flask-cors
1
2app = Flask(__name__)
CORS(app, supports_credentials=True) - 配合gevent实现并发访问
之前的代码运行时只有单实例,如果一个请求还在执行,另一个请求就进不来,简单的使用gevent可以实现并发:访问/index时,加了个延时,请求十秒以后才会响应,但是访问/test1时不会被阻塞,说明请求可以并发了。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26import time
from flask import Flask
from flask_cors import CORS
from gevent import monkey
from gevent.pywsgi import WSGIServer
monkey.patch_all()
app = Flask(__name__)
CORS(app)
def hello_world():
time.sleep(10)
return 'Hello World!'
def hello_test1():
return 'Hello World!'
if __name__ == '__main__':
http_server = WSGIServer(('0.0.0.0', 5000), app)
http_server.serve_forever()
有了这些框架,搭建简单的web应用便可以非常迅速了。