zoukankan      html  css  js  c++  java
  • 10before_request钩子函数

    1,什么是钩子函数?

    就是运行别人前都得先运行他:

    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    @app.before_request
    def bf():
        print("运行任何程序前都要先运行我,哈哈!")
    
    if __name__ == '__main__':
        app.run()

    2,应用在哪?

    比如在网站中检查是否为登陆状态,否则应跳转到登陆界面:

    from flask import Flask,render_template,g,url_for,request,redirect,session
    import os
    app = Flask(__name__)
    app.config['SECRET_KEY'] = os.urandom(24)
    
    @app.route('/')
    def hello_world():
        # print("index")
        return 'index!'
    
    @app.route('/login/' ,methods=['GET','POST'])
    def login():
        # print("login")
        if request.method == "GET":
            return render_template('login.html')
        else:
            username = request.form.get('username')
            password = request.form.get('password')
            if username == "1" and password == "1":
                session['username'] = "1"
                return 'Success to login in!'
            else:
                return redirect(url_for('login'))
    
    @app.route('/edit/')
    def edit():
        ##1和 #2都是一样的意思,但是1更方便,hasattr() 函数用于判断对象是否包含对应的属性。
        if hasattr(g,'username'):  #1
        # if session.get('username') == "1":  #2
            return 'success to edit'
        else:
            return redirect(url_for('login'))
    
    # before_request:在请求之前执行的,在视图函数执行之前执行的。
    # before_request只是一个装饰器,他可把要设置为钩子函数的代码放到视图函数执行之前来执行。
    @app.before_request
    def my_before_request():
        print('hw')
        # 有username证明用户是登陆状态
        if session.get('username'):
            g.username = session.get('username')  #g?
    # 相当于在每一个视图函数(如‘/’,/login/执行前都会执行这个函数。)
    
    
    if __name__ == '__main__':
        app.run()
  • 相关阅读:
    Error Domain=com.google.greenhouse Code=-102
    给分类(Category)添加属性
    Eclipse 4.4(luna) 安装Veloeclipse 2.0.8时报错的问题
    MAVEN常用命令
    Redis之七种武器
    Redis系统性介绍
    Nginx、LVS及HAProxy负载均衡软件的优缺点详解
    Redis介绍以及安装(Linux)
    MYSQL + MHA +keepalive + VIP安装配置(三)--keepalived安装配置
    MYSQL + MHA +keepalive + VIP安装配置(二)--MHA的配置
  • 原文地址:https://www.cnblogs.com/two-peanuts/p/10946625.html
Copyright © 2011-2022 走看看