Flask 是一个轻量级的 Web 框架, 如果要学习 Web 开发, Flask 非常适合作为我们学习的起点.
We’ll build a web application from scratch. Have fun
Ubuntu 16.04Python 3.5 Flask 1.0.2
命令如下
sudo apt-get upgrade
sudo apt-get install python3-setuptools
sudo apt-get install python3-dev
sudo apt-get install python3-pip
sudo pip3 install pip --upgrade
sudo pip3 install flask
server
首先我们创建一个文件夹 webapp, 并在其中新建一个 server.py 文件
mkdir ~/webapp
cd ~/webapp
touch server.py
接着, 我们打开 server.py
, 按照 Flask Quickstart 的示例, 开始编写第一个 server
from flask import Flask
app = Flask(__name__)
@app.route('/', methods=['GET'])
# methods 默认是 GET 因此可以简写为如下形式
# @app.route('/')
def hello():
return 'Hello'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=True)
保存文件后, 在 Terminal 中输入如下命令, 即可运行 webapp. 我们在浏览器中输入 http://server_ip:8080 即可访问网站, 页面的内容就是 Hello
python3 server.py
IndexHandler
在上一节中, 我们使用了 @ decorator
来指定某个路由对应的处理函数, 这样的写法非常方便. 同时, 我们也可以编写我们自己的 Handler
来处理各个不同的页面(路径). 比如, 对于首页 Index
, 即 http://server_ip:8080/
, 我们可以编写一个 class IndexHandler
, 注意这是一个 MethodView
的子类, 也就是说这是一个 View Handler
from flask import Flask
from flask.views import MethodView
app = Flask(__name__)
class IndexHandler(MethodView):
def __init__(self, name):
print(name)
def get(self):
return 'It is a GET request'
def post(self):
return 'It is a POST request'
if __name__ == '__main__':
app.add_url_rule('/', view_func=IndexHandler.as_view('index'))
app.run(port=8080, host='0.0.0.0', debug=True)
根据 flask docs, 传给 as_view()
的参数 name
会转发给构造函数, 我们暂时用不到这个参数 name
, 但是为了保持命名的一致性, 我们将其设置为 index
保存文件后, 在 Terminal
中输入如下命令, 即可运行 webapp
. 我们在浏览器中输入 http://server_ip:8080
即可访问网站, 页面的内容是 It is a GET request
python3 server.py
参考资料
quickstart, flask docs
as_view, flask docs
flask/flask/views.py