1.环境的使用
mkvirtualenv 1.0_flask -p python3
workon 1.0_flask
pip install flask
1-1 第一个helloworld程序
From flask import Flask
App = FLask(__name__, static_url_path = “/static”, static_folder= “/文件夹路径”)
@app.route(‘/路径’)
Def abc():
Return ‘hello world’
If __name__ == “__main__”:
App.run(host= “127.0.0.1”, port=5000, debug=True)
2.1启动方式
Export FLASK_APP=主应用文件夹名称 ——>是将当前变量存放到了临时环境变量中
终端运行: flask run ___> 1.0版本以上才有的
2.2 pycharm环境变量配置: FLASK_APP : 主应用文件夹名称
-m flask run
2.3 python -m flask run
3.加载配置方式:
3-1配置类 Development()
App.config.from_object(Development);
3-2配置文件 settings.py
App.config.from_pyfile(“配置文件名称”)
3-3通过环境变量进行配置
Export 环境变量名= 配置文件路径
pycharm里面进行配置环境变量, 环境变量名: 配置文件路径
App.config.from_envvar(‘环境变量名’)
拓展:Echo $环境变量名
4.路由与蓝图
App.url_map() ------> url(路径)-----abc()
蓝图:
From flask import Blueprint
lulu = Blueprint(‘uu’, __name__, static_url_path=‘/静态文件路由’, static_folder='static_admin', template_folder= “模板文件”)
app.register_blueprint(Lulu)
uu: 他是我们蓝图的名称, 当你打印app.url_map() ,你可以发现uu这个名字
5.响应
5-1 渲染模板 render_template()
5-2 response = make_response() return response
5-3 redirect(‘路径”)
5-4 return jsonify(字典)
6.请求
6-1 request.data 请求体
6-2 request.args 查询参数
6-3 request.files 文件
6-4 request.from 表单数据
6-5 request.cookies cookie数据
Request.method request.headers
扩展:
dango框架中的请求: request.GET request.Post request.body request.from
drf中的请求: request.query_param request.data
7:转换器
Django 可以通过正则表达式来匹配参数
Flask 路由里面没有正则,但是有转换器
@app.route(“/user/<user_id>”)
user_id 是一个参数, 默认是字符串, 如果不写,那就是默认的字符串转换器,返回一个字符串类型
@app.route(“/user/<int:user_id>”)
自定义转换器
from werkzeug.routing import BaseConverter
Class aaConverter(BaseConverter):
Regex = ‘’ #regex表示正则
app.url_map.converters[“aa”] = aaConverter
@app.route(“/user/<aa:user_id>”)
8;cookie与session
cookie:
Response = make_response()
Response.set_cookie(‘user’, “lulu”)
Request.cookies.get(“user”)
session:
Secret_key= ‘sdfjsdjf;skdjf;skdjf;sdf’
From flask import session
Session[“user”] = “lulu”
9.异常处理:可以在全局里面用,也可以在蓝图里面用。
Abort(404)
@app.errorhandler(404)
Def abc(e):
return ‘捕获404’
@lantu.errorhandler(404)
Errorhandler() 捕获异常
App_errorhandler() 捕获全局异常
10:请求钩子 --- 可以做如厕时的开门操作
假如你如厕时一次请求 request
Before_request 开门,每次做请求的时候
After_request 关门 , 请求完毕之后做的操作
Before_first_request 第一次做请求的时候,要做的操作,判断哪个坑位没有人
Teardown_request 销毁一个请求的时候,要做的操作
扩展:
Django: corstokenmidwear 这个中间件就是在请求来的时候,拦截,检测你这里有没有csrf_token, 如果有的话,放行,如果没有,报错
10: 上下文
今天我在街上遇见了杨幂,,,,,,,,,,,,,,,,,,,,,,,,
由上文已知,我遇见了杨幂,hjgghkjh ,,,,,,,,,,,,,,,,
请求上下文: request session
比如有请求过来,我去做一些操作 request是上文穿过来的数据
应用上下文: current_app g ---> 基于一次request请求而存在的,不是一直存在的
App = Flask(__name__)
Current_app 作用等同于 app
G:相当于一次请求中的临时仓库,可以存放东西,在一次请求中的可以存放,可以取用。