【Flask】 python学习第一章 - 4.0 钩子函数和装饰器路由实现

钩子函数和装饰器路由实现

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)
data

状态保持

无状态:http 无状态协议 每次请求独立, 协议对事务没有记忆能力,  同一个url请求 没有上下文关系

解决无状态协议问题 

 客户端 cookie

服务器端 session 

猜你喜欢

转载自www.cnblogs.com/oscarli/p/12056826.html