概要:Flask是一个web微框架。“微”也不代表 Flask 功能不强。 微框架中的“微”字表示 Flask 的目标是保持核心简单而又可扩展。
一、Flask安装
pip install flask
二、创建Flask工程
- 首先我们导入了 Flask 类。
- 创建该类的实例 app,第一个参数是应用模块或者包的名称。如果你使用 一个单一模块,那么应当使用 _name_ 。
- 使用 route() 装饰器来绑定函数的 URL 。
示例:
from flask import Flask
from flask import request
app = Flask(__name__)
@app.route('/study', methods=['GET'])
def hello_world():
return 'Hello World!'
@app.route('/study/<username>', methods=['GET'])
def studyvariable(username):
print(request.method)
print(request.url)
return 'Hello, {}'.format(username)
@app.route('/study/studypost', methods=['POST'])
def study_post():
data = request.form
print(type(data))
print(data)
print(data['username'])
return 'ok'
if __name__ == '__main__':
app.run()
三、相关方法,对象
(1)app.route(rule, options)
- rule 参数表示与该函数的URL绑定。
- options 是要转发给基础Rule对象的参数列表。
- methods 接收的是一个列表:GET、POST etc.
(2)app.run(host, port, debug, options) (所有参数都是可选的)
- host :要监听的主机名, 默认为127.0.0.1
- port :设置端口号, 默认值为5000
- debug :是否开启调试,默认为false。 如果设置为true,则提供调试信息
- options :要转发到底层的Werkzeug服务器。
(3)request
- 在 Flask 中由全局 对象 request 来提供请求信息,操作请求数据
(4)变量规则
通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量。标记的 部分会作为关键字参数传递给函数。通过使用<converter:variable_name> ,可以 选择性的加上一个转换器,为变量指定规则。例如示例中的变量 "<username>"
- 转换器类型:
类型 | 描述 |
---|---|
string | (缺省值) 接受任何不包含斜杠的文本 |
int | 接受正整数 |
float | 接受正浮点数 |
path | 类似 string ,但可以包含斜杠 |
uuid | 接受 UUID 字符串 |
四、调试项目
- 启动项目后控制台输出:
FLASK_APP = app.py
FLASK_ENV = development
FLASK_DEBUG = 0
In folder F:/Python项目/untitled
F:\Python项目\untitled\venv\Scripts\python.exe -m flask run
* Serving Flask app "app.py"
* Environment: development
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
- 通过Postman调试
发送Get请求:http://127.0.0.1:5000/study/wangwu
响应:Hello, wangwu
控制台输出:
127.0.0.1 - - [25/Feb/2020 14:13:15] "GET /study/wangwu HTTP/1.1" 200 -
GET
http://127.0.0.1:5000/study/wangwu
发送Post请求:http://127.0.0.1:5000/study/studypost
表单数据:{‘username’:‘lisi’, ‘password’:‘123456’}
响应:ok
控制台输出:
<class 'werkzeug.datastructures.ImmutableMultiDict'>
ImmutableMultiDict([('username', 'lisi'), ('password', '123456')])
lisi
127.0.0.1 - - [25/Feb/2020 14:26:42] "POST /study/studypost HTTP/1.1" 200 -