钩子函数和装饰器路由实现
before_request 每次请求都会触发
before_first_requrest 第一次请求前触发
after_request 请求后触发 并返回参数
teardown_request 失败后触发 并返回异常 需要传入参数接收
from flask import Flask, request # 设置对象 app = Flask(__name__, static_url_path=‘/python27‘, static_folder=‘static‘, template_folder=‘templates‘) # 第一次请求之前都会调用 例如mysql连接 @app.before_first_request def before_first_request(): print("before_first_request") # 每次请求都会被调用 @app.before_request def before_request(): print("before_request") # request.remote_addr 用户访问IP地址 # 判断如果访问地址在黑名单内 就return 黑名单 if request.remote_addr == "127.0.0.1": return "黑名单" # 请求之后会调用 并且在函数里面接收一个参数 响应 @app.after_request def after_request(response): print("after_request") # 对响应数据进行统一处理 response返回数据为return数据 return response # 请求失败之后会调用函数 并且将异常传入参数 @app.teardown_request def teardown_request(error): print("teardown_request") return error @app.route(‘/‘) def index(): return "hello wowlrd" if __name__ == ‘__main__‘: app.run(host=‘127.0.0.1‘, port=8888, debug=True)
werkzeug工具集
Request response routing模块 other
routing模块: Rule Map BaseConverters MapAdapter
Request 常用属性
data form args cookies headers methods url files
app.route("/data", methods=[‘POST‘])
def data():
data = request.data
print(data)
return "ok"
from flask import Flask, request app = Flask(__name__) @app.route("/") def index(): return "index" @app.route(‘/data‘, methods=[‘POST‘]) def data(): data = request.data print(data) return ‘ok‘ @app.route("/upload", methods=[‘POST‘]) def upload(): file = request.files.get("pic") file.save("aaa.jpg") return "success" if __name__ == ‘__main__‘: app.run(debug=True)
状态保持
无状态:http 无状态协议 每次请求独立, 协议对事务没有记忆能力, 同一个url请求 没有上下文关系
解决无状态协议问题
客户端 cookie
服务器端 session
【Flask】 python学习第一章 - 4.0 钩子函数和装饰器路由实现
原文:https://www.cnblogs.com/oscarli/p/12056826.html