• Flask 特殊装饰器


    请求进入函数之前 before_request

    1. # -*- coding: utf-8 -*-  
    2. from flask import Flask, session, redirect, request  
    3.     
    4. app = Flask(__name__)  
    5. app.secret_key = '124gt'  
    6.     
    7.     
    8. @app.before_request                   # 请求进入视图函数之前加载  
    9. def be():  
    10.     print('before_request....')  
    11.     if request.path == '/login':  
    12.         return None  # 直接略过  
    13.     
    14.     if not session.get('user'):  
    15.         return redirect('/login')  
    16.     
    17.     
    18. @app.route('/')  
    19. def index():  
    20.     print('index')  
    21.     return 'index'  
    22.     
    23.     
    24. @app.route('/login')  
    25. def login():  
    26.     session['user'] = '111134'  
    27.     return '登陆成功'  
    28.     
    29.     
    30. app.run(host='0.0.0.0'debug=True)  

     

    请求视图函数响应客户端之前加载 after_request

    1. @app.after_request                     # 请求视图函数响应客户端之前加载  
    2. def af1(args):  
    3.     # print(args)  # <Response 5 bytes [200 OK]>  
    4.     print('after_request...1')  
    5.     return args  
    6.     
    7. @app.after_request  
    8. def af2(args):  
    9.     print('after_request...2')  
    10.     return args  
    11.     
    12. @app.after_request  
    13. def af3(args):  
    14.     print('after_request...3')  
    15.     return args  
    16.     
    17. @app.route('/')  
    18. def index():  
    19.     print('index')  
    20.     return 'index' 

     

    结果

    1. index  
    2. after_request...3  
    3. after_request...2  
    4. after_request...1  
    5. 192.168.31.1 - - [09/Dec/2019 06:31:22] "GET / HTTP/1.1" 200 -  

     

    before_request和after_request异常情况下返回情况

    1. @app.before_request                   # 请求进入视图函数之前加载  
    2. def be1():  
    3.     print('before_request....1')  
    4.     
    5. @app.before_request  
    6. def be2():  
    7.     print('before_request....2')  
    8.     return '错误' # flask 返回的是HTTPRESPONSE对象  
    9.     
    10. @app.before_request  
    11. def be3():  
    12.     print('before_request....3')  
    13.     
    14. @app.after_request                     # 请求视图函数响应客户端之前加载  
    15. def af1(args):  
    16.     # print(args)  # <Response 5 bytes [200 OK]>  
    17.     print('after_request...1')  
    18.     return args  # 返回的是Response对象  
    19.     
    20. @app.after_request  
    21. def af2(args):  
    22.     print('after_request...2')  
    23.     return args  # 返回的是Response对象  
    24.     
    25. @app.after_request  
    26. def af3(args):  
    27.     print('after_request...3')  
    28.     return args  # 返回的是Response对象  
    29.     
    30. @app.route('/')  
    31. def index():  
    32.     print('index')  
    33.     return 'index'  

    结果

    after全部返回

    1. before_request....1  
    2. before_request....2  
    3. after_request...3  
    4. after_request...2  
    5. after_request...1  
    6. 192.168.31.1 - - [09/Dec/2019 06:39:30] "GET / HTTP/1.1" 200 -  

     

    页面错误 errorhandler(404) 

    1. 页面访问错误,找不到的时候,会执行这个装饰函数  
    2. @app.errorhandler(404)  
    3. def error(args):  
    4.     print(args)  
    5.     return '页面错误'  
  • 相关阅读:
    [Java学习] Java包装类、拆箱和装箱详解
    [Java学习] Java多态和动态绑定
    [Java学习] Java继承的概念与实现
    [Java学习] Java super关键字
    [Java代码] Java是自学好还是参加培训班好?
    [Java学习] Java字符串(String)
    [Java学习] Java方法重载
    [.NET源码] EF的增删改查
    C#面向服务WebService从入门到精通
    CoordinatorLayout-带图片伸缩工具栏
  • 原文地址:https://www.cnblogs.com/py-web/p/12010610.html
Copyright © 2020-2023  润新知