当前位置: 首页 > news >正文

flask---闪现/请求扩展/g对象

闪现

# 一个请求---》假设出错了---》重定向到另一个地址---》把错误信息在另一个返回中看到
错误信息放个位置----》另一个请求过来,去那个位置拿
# 把一些数据,放在某个位置---》后期可以去取出来----》取完不用删除,就没了
def index():s='xx错位了'return redirect('/errors')def errors():return index.html# 如何设置
flash('aaa')
# 如何取
get_flashed_message()# 分类放
flash('超时错误', category="x1")
# 分类取
data = get_flashed_messages(category_filter=['x1'])
from flask import Flask,flash,get_flashed_messagesapp=Flask(__name__)
app.debug=True
app.secret_key='asdfasdfasdfa'
# 只要用闪现---》就要设置secret_key----》放到session中了@app.route('/')
def index():# 放入我的名字# flash('lqz')  # 放哪了?# 分类放flash('超时错误', category="x1")return 'xxx'
@app.route('/home')
def home():# 取出我的名字name=get_flashed_messages(category_filter=['x2'])print(name)return 'home'@app.route('/order')
def order():# 取出我的名字# name=get_flashed_messages()# print(name)data = get_flashed_messages(category_filter=['x1'])print(data)# 按分类取return 'home'
if __name__ == '__main__':app.run(port=8080)
# 1 django 的message就是做这个事的
# 2 闪现有什么用?-暂时存数据-当次请求出错了,下次请求要显示这个错误

请求扩展

# 类似于django中的中间件-请求来了,请求走了,做一些拦截1 before_request2 after_request3 before_first_request4 teardown_request5 errorhandler6 template_global7 template_filter# before_request 每个请求来了,都会走

before_request

# 请求来了执行---》process_request--->可以下多个,从上往下依次执行
@app.before_request
def before():# 当次请求的对象就是request# 1  判断访问的不同路径# if request.path=='/':#     print('我来了')# else:#     print('访问其他路径')# 2 判断如果是跟路径,向request对象中放个name,其他不放# if request.path == '/':#     request.name = 'lqz'# else:#     print('访问其他路径')# 3 返回None,会执行下一个请求扩展,如果返回4件套,直接就返回了,不再往下执行了# if request.path=='/':#     return '不让你访问'# else:#     print('访问其他路径')# 4 多个before_request,从上往下执行print('1111')@app.before_request
def before2():print('2222')

after_request

@app.after_request
def after2(response):print('走了走了222')return response@app.route('/')
def index():# print(request.name)return 'xxx'

before_first_request

# 项目运行起来的第一次会执行,以后再也不执行了
# 1.x可以,2.x弃用了

teardown_request

# teardown_request 每一个请求之后绑定一个函数,即使遇到了异常---》一般用来记录日志--->不能做统一异常处理
@app.teardown_request
def ttt(e):# 通过判断e是否为空,记录日志print(e)  # 出了异常,e就是异常对象,如果没有异常,e就是Noneprint('来了老弟')if e:return '出异常了'

errorhandler

## errorhandler
@app.errorhandler(404)
def error(e):print(e)print('xxx')return render_template('error.html')@app.errorhandler(500)
def error1(e):print(e)print('500')return jsonify({'code': 999, 'msg': '服务器内部错误,请联系系统管理员'})

template_global全局标签

# template_global 全局标签,所有页面都可以用
@app.template_global()
def add(a1, a2):return a1 + a2

template_filter全局过滤器

# template_filter 全局过滤器
@app.template_filter()
def db(a1, a2, a3):print(a1)return a1 + a2 + a3

g对象

# 请求来了,在request中放个path,后续的视图函数中都能拿到
# flask不建议向request对象中放变量,建议使用g对象# g对象,当次请求中放入的变量,在当次请求中一直存在# global的缩写,global# g和session的区别-g只针对于当次请求-session可以跨请求

http://www.lryc.cn/news/109292.html

相关文章:

  • Qt视频播放器
  • Stable Diffusion教程(8) - X/Y/Z 图表使用
  • Android 获取网关 ip 和 DNS ip
  • Docker root用户的pip使用方法
  • 企业新片场排名如何优化
  • Database Name
  • git代码版本管理
  • k8s概念-ConfigMap
  • Mybatis 实体类属性名和表中字段名不一致怎么处理
  • CAS - 从AtomicInteger窥探CAS
  • micro-ros IMU ML 代码
  • 二十三种设计模式第二十四篇--访问者模式(完结撒花)
  • 月报总结|Moonbeam 7月份大事一览
  • 【2023.8】docker一键部署wvp-GB28181-pro和ZLMediaKit过程全记录
  • 【2023】字节跳动 10 日心动计划——第四关
  • 数据库与数据仓库的区别及关系
  • Emacs之设置行号前景颜色(字体颜色)/背景颜色/光标颜色/背景透明度(一百二十七)
  • 【hive经典指标,离线数仓指标,ADS层指标分析】最近7日内连续3日下单用户数
  • 线上java程序CPU及内存占用过高问题排查总结
  • c高级:day3
  • Java检查值是否存在于数组中的3种方法
  • python 连接oracle pandas以简化excel的编写和数据操作
  • Kubernetes高可用集群二进制部署(三)部署api-server
  • 【网络|TCP】三次握手、四次握手
  • 刷题笔记 day7
  • Tuxera NTFS2023Mac强大的Mac读写工具
  • ARM64 常见汇编指令学习 11 -- ARM 汇编宏 .macro 的学习
  • 数据库的分库分表
  • [Docker实现测试部署CI/CD----相关服务器的安装配置(2)]
  • LC-980. 不同路径 III(回溯)