Flask中间件 -- 2019-08-11 19:14:55
Posted gqy02
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask中间件 -- 2019-08-11 19:14:55相关的知识,希望对你有一定的参考价值。
原文: http://106.13.73.98/__/115/
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://106.13.73.98/__/115/
以上是关于Flask中间件 -- 2019-08-11 19:14:55的主要内容,如果未能解决你的问题,请参考以下文章
Flask之Flask-Session -- 2019-08-11 19:38:31
Python jieba -- 2019-08-11 18:43:19
jQuery基础 -- 2019-08-11 19:33:26
Python collections -- 2019-08-11 19:40:35