zoukankan      html  css  js  c++  java
  • Flask-钩子函数

         在Flask中钩子函数是使用特定的装饰器的函数。为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就叫做钩子函数。

    • before_first_request:Flask项目第一次部署后会执行的钩子函数。
    • before_request:请求已经到达了Flask,但是还没有进入到具体的视图函数之前调用。一般这个就是在函数之前,我们可以把一些后面需要用到的数据先处理好,方便视图函数使用。

    before_request

     
    @app.before_first_request
    def first_request():
        print('只有在处理第一次请求之前执行')
    
    @app.before_request
    def before_request():
        print('在视图函数执行之前执行')

    after_request

    装饰的视图函数有response参数,return response

    视图函数执行之后,请求返回客户端之前。执行!

    context_rocessor

     只用这个钩子函数,必须返回一个字典。这个字典的值在所有模板中都可以使用。这个钩子函数的作用是,如果一些在很多模板中都要用到的变量,那么就可以使用这个钩子函数来返回,而不是在每个视图函数汇总的render_template中去写,这样可以让代码更加简洁和好维护。

    @app.context_processor
    def context_rocessor():
        return {{'current_user':'xxx'}}

     errorhandler

    在发生异常的时候,比如404,500错误,自定义错误的页面,在errorhangdler装饰的钩子函数下:

    • 要返回状态码
    • 必须写一个参数,来接受错误的信息

    使用flask.abort可以手动的抛出相应的错误,比如开发者发现参数不正确的时候可以手动的抛出一个404错误。

    @app.errorhandler(500)
    def server_error(error):
        return render_template('500.html'),500
    
    @app.errorhandler(404)
    def page_not_found(error):
        return render_template('404.html'),404
     
  • 相关阅读:
    MVP模式与MVVM模式
    webpack的配置处理
    leetcode 287 Find the Duplicate Number
    leetcode 152 Maximum Product Subarray
    leetcode 76 Minimum Window Substring
    感知器算法初探
    leetcode 179 Largest Number
    leetcode 33 Search in Rotated Sorted Array
    leetcode 334 Increasing Triplet Subsequence
    朴素贝叶斯分类器初探
  • 原文地址:https://www.cnblogs.com/caodneg7/p/10141452.html
Copyright © 2011-2022 走看看