Flask我们已经学习很多基础知识了,现在有一个问题

我们现在有一个 Flask 程序其中有3个路由和视图函数,如下:

from flask import Flask

app = Flask(__name__)  # type:Flask

@app.route("/login")
def login():
return "Login" @app.route("/index")
def index():
return "Index" @app.route("/home")
def home():
return "Login" app.run("0.0.0.0", 5000)

简单的小程序

如果登陆了,就可以访问 index 和 home 页面,如果没登录就跳转到 login 登录

要怎么解决呢, session 对, 用 session 除了 Login 函数之外的所有函数里面全校验 session 是否登录了

太麻烦了,现在咱们只有3个函数,如果成百上千个怎么整啊

装饰器,对没错,装饰器是一个很好的方案,但是啊,我现在还是成败上千个函数,我要在每一个函数定义的时候加上@装饰器,还是很麻烦

那么就引出了我们要学习的第一个知识点:

1.@app.before_request 在请求(request)之前做出响应

from flask import Flask
from flask import request
from flask import redirect
from flask import session app = Flask(__name__) # type:Flask
app.secret_key = "DragonFire" @app.before_request
def is_login():
if request.path == "/login":
return None if not session.get("user"):
return redirect("/login") @app.route("/login")
def login():
return "Login" @app.route("/index")
def index():
return "Index" @app.route("/home")
def home():
return "Login" app.run("0.0.0.0", 5000)

解决所有问题

@app.before_request 也是一个装饰器,他所装饰的函数,都会在请求进入视图函数之前执行

request.path 是来读取当前的url地址如果是 /login 就允许直接通过 return None 你可以理解成通过放行

校验session中是否有user 如果没有的话,证明没有登录,所以毫不留情的 redirect("/login") 跳转登录页面

还有一个要提的 @app.before_first_request 它与 @app.before_request 极为相似或者说是一模一样,只不过它只会被执行一次

2. @app.after_request 在响应(response)之前做出响应

@app.after_request
def foot_log(environ):
if request.path != "/login":
print("有客人访问了",request.path)
return environ
 
 
 

最新文章

  1. BZOJ3224——Tyvj 1728 普通平衡树
  2. TransactionScope类
  3. 解决adb server端口被占用的问题
  4. Python中变量的作用域(variable scope)
  5. VS2012报表(RDLC)系列应用之单据批量打印
  6. eclipse快捷键总结
  7. Qt编程之QString 处理换行
  8. Spring RESTful服务接收和返回JSON最佳实践
  9. Android 实现串口的移植
  10. c#实现用SQL池(多线程),定时批量执行SQL语句 【转】
  11. PowerDesigner 使用教程(很具体,很实用)
  12. 关于sql server profiler 监控工具的使用
  13. scrum第二次冲刺
  14. Tomcat Server处理一个http请求的过程
  15. 利用nodejs安装并运行express的三个坑
  16. 安装installshield问题
  17. python-day9-循环嵌套
  18. 记一个鼠标略过时候的css动画
  19. spring-boot Test for Controller
  20. 【Python】理想论坛帖子读取爬虫1.04版

热门文章

  1. 仿真DDR3 Controller IP
  2. 超好用的一个JQUERY分页器-jpaginate
  3. hp zbook15G2 nVidia K1100M显卡在ubuntu linux下闪屏问题
  4. SAP成都研究院飞机哥: SAP C4C中国本地化之微信聊天机器人的集成
  5. CRUD全栈式编程架构之导入导出的设计
  6. 认识http客户端
  7. Git永久删除commit--[非教程]
  8. 第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列
  9. rnn,lstm and JuergenSchmidhuber
  10. 理解golang中的function types