首页 > 其他 > 详细

10before_request钩子函数

时间:2019-05-29 23:12:49      阅读:109      评论:0      收藏:0      [点我收藏+]

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

 

10before_request钩子函数

原文:https://www.cnblogs.com/two-peanuts/p/10946625.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!