码迷,mamicode.com
首页 > 其他好文 > 详细

【Flask中间件】 𤋢

时间:2019-08-18 15:16:33      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:direct   code   style   username   orm   imp   log   访问   ons   

原文: http://blog.gqylpy.com/gqy/340

"before_request装饰器用于在请求之前做出响应,它所装饰的函数,都会在进入视图函数之前执行。

after_request装饰器用于在请求之后做出响应,它所装饰的函数,都会在执行完视图函数之后执行。

执行顺序:按照写在文件内的顺序执行,而且,无论是从哪个before_request装饰的函数中断的,都会执行所有的after_reponse装饰的函数。

还有一个before_first_request装饰器,他与before_request极为相识或者说是一模一样,只不过它只会被执行一次。

下面是一个使用before_request装饰器验证用户是否登陆的例子:

from flask import Flask, request, redirect, session, render_template

app = Flask(__name__)
app.secret_key = "用于session加密的字符串"


# 这个函数被before_request装饰,将在所有的视图函数之前执行
@app.before_request
def is_login():
    if request.path == '/login':  # 如果访问的是登陆页面,则直接放行
        return None
    if not session.get('username'):  # 如果没有session数据,则去登陆
        return redirect('/login')
    return None  # 返回None即表示放行


@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        session['username'] = request.form.get('username')
        return redirect('/home')
    return render_template('login.html')


@app.route('/home')
def home():
    return 'This is home page.'


app.run(debug=True)

after_request的用法:

@app.after_request
def af1(response):  # 要接收response
    return response  # 必须返回response

"

原文: http://blog.gqylpy.com/gqy/340

【Flask中间件】 𤋢

标签:direct   code   style   username   orm   imp   log   访问   ons   

原文地址:https://www.cnblogs.com/bbb001/p/11372371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!