请求拦截器

将请求拦截下来,通过的予以访问,不通过的就拦截。
没太看明白
在根目录下新建一个文件夹interceptor,然后创建一个auth.py:

  1. from application import app
  2. @app.before_request
  3. def before_request():
  4. app.logger.info("----------------------")
  5. # return "OK" # 这里如果返回了OK,那么真实的结果就不会返回到浏览器了,浏览器只能看到”OK“

然后这个文件还要引入到注册文件中:

from interceptor.auth import *

请求拦截器与错误处理器 - 图1

如果return了OK,无论访问啥,都是返回OK,因为被拦截了。
请求拦截器与错误处理器 - 图2

除了before_request,还有after_request【云里雾里了】

# _*_ coding:utf-8 _*_
from application import app

@app.before_request
def before_request():
    app.logger.info("-----------i am before_request-----------")
    return


@app.after_request
def after_request( response):
    app.logger.info("-----------i am after_request-----------")
    return response

这样的话,网页该输出啥输出啥,然后debug输出:

--------------------------------------------------------------------------------
INFO in auth [H:\new_to_flask\interceptor\auth.py:6]:
-----------i am before_request-----------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
INFO in auth [H:\new_to_flask\interceptor\auth.py:12]:
-----------i am after_request-----------
--------------------------------------------------------------------------------
127.0.0.1 - - [17/Jun/2020 22:29:20] "GET /learning/ HTTP/1.1" 200 -

错误处理器

例如访问了一个不存在的资源怎么办,可以用这个方法。传说中的404。
同样在interceptor文件夹下创建errorhandler.py:

# _*_ coding:utf-8 _*_
from application import app


@app.errorhandler(404)
def my_error_404(e):
    return "Opps,404啦"

注册文件中导入:

from controllers.index import index_page
from application import app

from interceptor.auth import *
from interceptor.errorhandler import *
from flask_debugtoolbar import DebugToolbarExtension

toolbar = DebugToolbarExtension(app)

app.register_blueprint(index_page,url_prefix='/learning')

然后在浏览器中输入一个不存在的路径:
请求拦截器与错误处理器 - 图3