0
点赞
收藏
分享

微信扫一扫

【Flask】示例程序学生管理

设置并判断session的作用是已经登陆的用户才可以访问到主页,对于session的判断方法有以下3个版本

  1. 在每个登陆之后才可以访问的路由下,进行判断,效率太低,弃用该方法
@app.route('/index')
def index():
if not session.get('user'):
return redirect(url_for('login'))
return render_template('index.html',stu_dic=STUDENT_DICT)
  1. 再写一个装饰器,在装饰器里进行判断session,这种方式适用于,需要装饰的函数较少的情况
import functools
def auth(func):
@functools.wraps(func) #装饰器返回的inner函数,所以会把函数名修改成inner,调用此句将函数改成原来的名字
def inner(*args,**kwargs):
if not session.get('user'):
return redirect(url_for('login'))
ret = func(*args,**kwargs)
return ret
return inner

@app.route('/index')
@auth
def index():
return render_template('index.html')

#应用场景:比较少的函数中需要额外添加功能。
  1. 利用before_request,在请求响应之前进行session判断
@app.before_request
def xxxxxx():
if request.path == '/login': #登陆界面不需要验证session
return None
if session.get('user'): #如果session存在,不做其他处理
return None
return redirect('/login') #session不存在的话,直接重定向到登陆界面


举报

相关推荐

0 条评论