Flask是一个使用Python编写的轻量级Web应用框架,较其他类型框架更为灵活、轻便、安全且容易上手。
1.flask框架
Python 目前主要流行的web框架:flask、Django、Tornado等等。
flask 框架是一款基于 WSGI 的轻量级的web框架。flask 犹如耳熟能详的“麻雀虽小,五脏俱全”,因此flask具有简单可拓展的特点。
使用pip命令安装flask。
pip install flask
2.最简单的例子
from flask import Flask
app = Flask(__name__) # 实例app
@app.route("/") # 路由
def hello_world():
return 'hello, world' # 返回值
if __name__ == '__main__':
app.run(host='127.0.0.1',port=8080,debug = True)
# 开启 debug 模式
# app.run(host='127.0.0.1', port=8080)
运行结果:
* Serving Flask app 'flaskdemo1' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:8080 (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 117-293-058
127.0.0.1 - - [13/May/2022 10:45:57] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [13/May/2022 10:45:57] "GET / HTTP/1.1" 200 -
打开浏览器地址栏输入:http://localhost:8080, 执行默认的路由(/),返回视图为字符串"hello,world"。
下面实现一个超简单的登录注册效果。
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def home():
return '<h1>主页</h1>'
@app.route('/signin', methods=['GET'])
def signin_form():
return '''<form action="/signin" method="post">
<p>用户名:<input name="username"></p>
<p>密码:<input name="password" type="password"></p>
<p><button type="submit">登录</button></p>
</form>'''
@app.route('/signin', methods=['POST'])
def signin():
# 需要从request对象读取表单内容:
if request.form['username']=='admin' and request.form['password']=='123456':
return '<h3>登录成功!</h3>'
return '<h3>登录失败,请检查用户名或者密码是否正确。</h3>'
if __name__ == '__main__':
app.run(host='127.0.0.1',port=8080,debug = True)
如果直接调用app.run();Flask自带的Server在端口5000上监听。
运行结果: 打开浏览器,输入首页地址http://localhost:8080/:
再在浏览器地址栏输入http://localhost:8080/signin,会显示登录表单:

输入预设的用户名admin和口令123456,登录成功:

小结: 有了Web框架,我们在编写Web应用时,注意力就从WSGI处理函数转移到URL+对应的处理函数,这样,编写Web App就更加简单了。在编写URL处理函数时,除了配置URL外,从HTTP请求拿到用户数据也是非常重要的。Web框架都提供了自己的API来实现这些功能。Flask通过request.form['name']来获取表单的内容。