首页 > 其他分享 >flaks 钩子函数 | 中间件 | 内置对象 | Flask类视图和RESTfu

flaks 钩子函数 | 中间件 | 内置对象 | Flask类视图和RESTfu

时间:2024-11-01 11:59:59浏览次数:1  
标签:name Flask fields app 中间件 视图 api 函数 string

什么是钩子(中间件Middleware)
钩子或叫钩子函数,是指在执行函数和目标函数之间挂载的函数,框架开发者给调用方提供一个point-挂载点,
是一种AOP切面编程思想,
常用的钩子函数
before_first_request:   处理第一次请求之前执行,
before_request:  在每次请求之前执行,通常使用这个钩子函数预处理一些变量,实现反爬等
after_request:  注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
teardown_appcontext:  当APP上下文被移除之后执行的函数,可以进行数据库的提交或者回滚

 


 

g
global全局对象
g对象是专门用来保存用户的数据的
g对象在一次请求中的所有的代码的地方,都是可以使用的
突破变量存储位置限制,为数据传递添加了新的方式,比如我们在before_request产生一个数据在后面需要使用,
可以保存在g对象中,在其他视图函数中就可以使用这个数据,


request:
请求对象,可以获取客户端提交过来的所有请求信息


session:
会话技术,服务端会话技术的接口


current_app:
app的配置信息,app对象获取,
current app
使用获取当前app需要注意,一定要在程序初始化完成之后

 


 

 

Flask类视图 和 RESTfu

安装插件

# pip 安装
pip install flask-restful

  

创建Resource实现类  创建一个文件api 

class HelloRESTful(Resource):
  def get(self):
      return {"data":"Hello GET"}
  def post(self):
      return {'data':'hello PosT'}

 

 

 

创建一个文件urls 

#方式一: 创建并初始化
api = API(app)
#方式二: 创建,之后初始化
api = API()
api.init_app(app)
#注册路由 api.add resource(HellORESTFul,"/")

 

 

 

 字段格式化 

fields  进行定义
marshal_with  进行使用
特性

  • 显示我们设计的数据结构
  • 默认返回的数据如果在预定义结构中不存在,数据会被自动过滤
  • 如果返回的数据在预定义的结构中存在,数据会正常返回
  • 如果返回的数据比预定义结构中的字段少,预定义的字段会呈现一个默认值

定义字段输出

  • 使用字典进行定义
  • 常用都是基本类型:string,Integer

 

定义好的格式通过装饰器进行使用
@marshal_with(需要返回的数据格式),

return返回字典就ok了

class Users(Resource):
    @marshal with(user fields)

    def get(self):
        return {'msg':'呵呵','data':'没有数据', 'age':'22','private_data':'表中数据"}    

  

案例展示   Nested  嵌套字典 

#格式化字段
usermodel_fileds ={
  'id':fields.Integer,
  'name': fields.string,
}
user2_fields ={   'msg':fields.string(default='ok'),   'status':fields.Integer(default=1),   'data':fields.Nested(usermodel_fileds) // 这个字段要遵循上一个字段的定义
}

  

嵌套列表   fields.List (usermodel_fileds) 嵌套列表 

#格式化字段
usermodel_fileds ={
  'id': fields.Integer,
  'name': fields.string,
} users3_fields ={   'status':fields.string(default=1),   'msg': fields.string,   'data': fields.List(fields.Nested(usermodel_fileds)
)

 

url

连接字段

  • 就是将当前数据的操作api暴露出来
  • 根据提供的ur1和唯一标识进行数据操作
#格式化字段
usermodel_fileds = {
  'id':fields.Integer,
  'name': fields.string,
  'url':fields.Url('id', absolute=True)
}
# 在add_resource中提供对应的 endpoint api.add resource(Users4, "/user4/', endpoint='id')

  

接受前台提交的参数

 

参数解析  reqparse    apis 文件代码 

parser =reqparse.RequestParser(
parser.add_argument('name',type=str,required=True, help='name是必需的参数')
class User4Resource(Resource):
  def get(self):
  #获取参数
  args =parser.parse args()
  name = args.get('name')
  return {'name': name}

  

 

 

 

 

标签:name,Flask,fields,app,中间件,视图,api,函数,string
From: https://www.cnblogs.com/longly1111/p/18519749

相关文章

  • laravel11:中间件传递参数
    一,官方的文档:参考地址:https://docs.golaravel.com/docs/middleware二,演示:功能:一个中间件负责验证用户是否已登录,    传递参数的作用是:在已登录基础是否验证真人身份核验,值为1时要核验,其他情况可以不用1,为中间件注册一个别名:bootstrap/app.php->withMidd......
  • Flask
    Flask应用创建虚拟环境$python3-mvenvFlask_env修改环境目录权限$sudochown-Rpi:piFlask_env激活虚拟环境$sourceFlask_env/bin/activate安装Flask$pipinstallFlask确认安装完成$piplist|grepFlaskFlask3.0.3创建一个file_......
  • python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于骨科门诊患者档案管理系统的研究,现有研究主要集中在综合性医院患者档案管理方面,专门针对骨科门诊患者档案管理的研究较少。在国内......
  • flask模板
    模板基础使用block块操作父模板挖坑,子模板填坑{%blockxxx%}{%endblock%extends继承{%extends'xxx'%}继承后保留块中的内容{{super()}}include包含,将其他htm1包含进来{%include'xxx'%}宏的使用 宏定义:Python函数#}{%macroperson(name,ag......
  • python+flask计算机毕业设计共享汽车租赁系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于共享汽车租赁系统的研究,现有研究多侧重于传统汽车租赁业务的数字化转型,主要以提升租车流程的效率和便捷性为主。专门针对共享汽车......
  • 如何在 Ubuntu 18.04 上使用 Gunicorn 和 Nginx 提供 Flask 应用程序
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介在本指南中,您将在Ubuntu18.04上使用Flask微框架构建一个Python应用程序。本文的大部分内容将介绍如何设置Gunicorn应用服务器,以及如何启动应用程序并配置Ngi......
  • 如何在 Ubuntu 18.04 上使用 Gunicorn 和 Nginx 提供 Flask 应用程序
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介在本指南中,您将在Ubuntu18.04上使用Flask微框架构建一个Python应用程序。本文的大部分内容将介绍如何设置Gunicorn应用服务器,以及如何启动应用程序并配置Ngi......
  • 响应式项目(RxJS+Vue.js+Spring)大决战(5):主页的实现(前端视图模块)
    书接上篇:响应式项目(RxJS+Vue.js+Spring)大决战(4):主页的实现(后端服务模块)5.2前端视图模块5.2.1整体结构的设计        前端模块app-view/home负责主页视图的建构,其结构如下图所示:        本篇所述方法,体现了极强的独特性、技巧性! 5.2.2主页home.html ......
  • 界面控件DevExpress WPF中文教程:Data Grid——卡片视图概述
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • 西安短期驻场:python+flask/django 1.5万/月可谈
    驻场周期:2个月,不包食宿。地点:西安高新区费用:1.5万/月。可谈python后台开发岗位要求:-本科及以上学历,计算机相关专业,3年以上开发经验。-熟悉Python及其主流框架flask或django。-熟悉数据库设计与优化,如MySQL、Mango等,具备数据库性能调优经验。-熟练使用Git等版本控制工具,具备......