1、fields字段的简单使用

示例代码:

import json
from datetime import datetime
from flask_restful import fields, marshal# 基本例子
resource_fields = {'name': fields.String,'address': fields.String,'date_updated': fields.DateTime(dt_format='rfc822'),
}class UserInfo(object):def __init__(self, name, address, date_updated=datetime.now()):self.name = nameself.address = addressself.date_updated = date_updatedprint(UserInfo('dgw', 'beijing'))
print(UserInfo('dgw', 'beijing').name, UserInfo('dgw', 'beijing').address)
print(json.dumps(marshal(UserInfo('dgw', 'beijing'), resource_fields)))

运行结果:

2、fields字段起别名

示例代码:

import json
from datetime import datetime
from flask_restful import fields, marshalclass UserInfo(object):def __init__(self, name, address, date_updated=datetime.now()):self.name = nameself.address = addressself.date_updated = date_updated# 输出域别名
resource_fields2 = {'open_name': fields.String(attribute='name'),'open_name2': fields.String,  # 如果获取不到该名称对应的属性名,将返回空值'address': fields.String,'date_updated': fields.DateTime(dt_format='rfc822'),
}
print(json.dumps(marshal(UserInfo('dgw', 'beijing'), resource_fields2)))

运行结果:

3、fields字段输出默认值

示例代码:

import json
from datetime import datetime
from flask_restful import fields, marshal# # 输出域默认值
class UserInfo2(object):def __init__(self, address):self.address = addressresource_fields3 = {'open_name': fields.String(default='add_dgw'),'address': fields.String,'date_updated': fields.DateTime(dt_format='rfc822', default=str(datetime.now())),
}print(json.dumps(marshal(UserInfo2(address='beijing'), resource_fields3)))

运行结果:

4、fields字段自定义输出域

示例代码:

import json
from datetime import datetime
from flask_restful import fields, marshal# 自定义输出域
class UserInfo2(object):def __init__(self, address, flag, date_updated=datetime.now()):self.address = addressself.date_updated = date_updatedself.flags = flagclass UrgentItem(fields.Raw):def format(self, value):return "Urgent" if value & 0x01 else "Normal"resource_fields4 = {'open_name': fields.String(default='add_DGW'),'address': fields.String,'date_updated': fields.DateTime(dt_format='rfc822'),'priority': UrgentItem(attribute='flags'),
}
print(json.dumps(marshal(UserInfo2(address='beijing', flag=0), resource_fields4)))
print(json.dumps(marshal(UserInfo2(address='beijing', flag=1), resource_fields4)))

运行结果:

5、fields字段嵌套List类型

示例代码:

import json
from datetime import datetime
from flask_restful import fields, marshal# 基本例子
resource_fields = {'name': fields.String,'address': fields.String,'teachers': fields.List(fields.String),'date_updated': fields.DateTime(dt_format='rfc822'),
}class UserInfo(object):def __init__(self, name, address, teachers, date_updated=datetime.now()):self.name = nameself.address = addressself.teachers = teachersself.date_updated = date_updatedprint(UserInfo('dgw', 'beijing', ['AAA', 'BBB']))
print(UserInfo('dgw', 'beijing', ['AAA', 'BBB']).name, UserInfo('dgw', 'beijing', ['AAA', 'BBB']).teachers)
print(json.dumps(marshal(UserInfo('dgw', 'beijing', ['AAA', 'BBB']), resource_fields, envelope=False)))

运行结果:

6、fields字段嵌套Nested类型

示例代码:

import json
from datetime import datetime
from flask_restful import fields, marshalclass TeacherInfo(object):def __init__(self, name, age, sex):self.name = nameself.age = ageself.sex = sexteacher_fields = {'name': fields.String,'age': fields.String,'sex': fields.String}class UserInfo(object):def __init__(self, name, address, teachers, date_updated=datetime.now()):self.name = nameself.address = addressself.teachers = teachersself.date_updated = date_updateduser_fields = {'name': fields.String,'address': fields.String,'teachers': fields.Nested(TeacherInfo.teacher_fields),'date_updated': fields.DateTime(dt_format='rfc822'),}aa = json.dumps(marshal(TeacherInfo('AAA', '26', 'man'), TeacherInfo.teacher_fields))
print(aa)teacher1 = marshal(TeacherInfo('AAA', '26', 'man'), TeacherInfo.teacher_fields)
teacher2 = marshal(TeacherInfo('BBB', '25', 'woman'), TeacherInfo.teacher_fields)bb = json.dumps(marshal(UserInfo('dgw', 'beijing', [teacher1, teacher2]), UserInfo.user_fields))
print(bb)

运行结果:

7、fields字段中的复杂结构

示例代码:

import json
from flask_restful import fields, marshal# 复杂结构
resource_fields = {'name': fields.String}
resource_fields['address'] = {}
resource_fields['address']['line 1'] = fields.String(attribute='addr1')
resource_fields['address']['line 2'] = fields.String(attribute='addr2')
resource_fields['address']['city'] = fields.String
resource_fields['address']['state'] = fields.String
resource_fields['address']['zip'] = fields.String
data = {'name': 'bob', 'addr1': 'shanghai', 'addr2': '', 'city': 'New York', 'state': 'NY', 'zip': '10468'}
print(json.dumps(marshal(data, resource_fields)))

运行结果:

8、fields字段中的嵌套域

示例代码:

import json
from flask_restful import fields, marshal# 嵌套域
address_fields = {}
address_fields['line 1'] = fields.String(attribute='addr1')
address_fields['line 2'] = fields.String(attribute='addr2')
address_fields['city'] = fields.String(attribute='city')
address_fields['state'] = fields.String(attribute='state')
address_fields['zip'] = fields.String(attribute='zip')resource_fields = {}
resource_fields['name'] = fields.String
resource_fields['billing_address'] = fields.Nested(address_fields)
resource_fields['shipping_address'] = fields.Nested(address_fields)address1 = {'addr1': 'qingdao', 'city': 'New York', 'state': 'NY', 'zip': '10468'}
address2 = {'addr1': 'nanjing', 'city': 'New York', 'state': 'NY', 'zip': '10468'}address3 = {'line 1': 'wuhan', 'line 2': 'tianmen', 'city': 'New York', 'state': 'NY', 'zip': '10468'}
address4 = {'addr1': 'wuhan', 'addr2': 'tianmen', 'city2': 'New York', 'state': 'NY2', 'zip': '11002'}data1 = {'name': 'bob', 'billing_address': address1, 'shipping_address': address2}
data2 = {'name': 'bob', 'billing_address': address3, 'shipping_address': address4}print(json.dumps(marshal(data1, resource_fields)))
print(json.dumps(marshal(data2, resource_fields)))

运行结果:

flask_restful中的输出域(Resource、fields、marshal、marshal_with)相关推荐

  1. JS中的跨域问题及解决办法汇总

    一.什么是跨域? 在了解跨域之前,首先要知道什么是同源策略(same-origin policy).简单来讲同源策略就是浏览器为了保证用户信息的安全,防止恶意的网站窃取数据,禁止不同域之间的JS进行交 ...

  2. javascript中实现跨域的方式总结

    js中的跨域请求应该也算是一个重点,具体什么叫跨域,在这里我就不展开了,可以查一下浏览器的同源策略和跨域的定义.原来只知道常用的jsonp和document.domain这两种方式,这几天学习了一下其 ...

  3. 【6】测试用例设计-输入域+输出域+异常分析+错误出错法

    目录 输入域测试 输出域测试 异常分析 错误猜测 输入域测试 极端测试如学生成绩0分,1分,2分,情况很少这种. 特殊值如-99,0,99 长时间输入内存溢出,内存泄露. 输出域测试 异常分析 异常操 ...

  4. yii2 跨域请求配置_如何在SpringBoot应用中实现跨域访问资源和消息通信?

    允许跨域访问 CORS ( Cross Origin Resource Sharing,跨域资源共享)机制允许Web应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行.浏览器支持在API容器中 ...

  5. [Mailbox]SIM卡中Alpha Identifier域解析

    简介:3GPP TS 11.11的EFADN域详细介绍了手机SIM卡中Alpha Identifier域的组织方法,因为工作中使用到Mailbox name解析,而Mailbox name的解析方法是 ...

  6. TIA博途WINCC中给IO域添加确认功能的具体方法步骤

    TIA博途WINCC中给IO域添加确认功能的具体方法步骤 在TIA博途中新建一个项目,添加一个PLC和HMI设备,这里就不再演示添加过程,在PLC默认变量表中添加一个"输出变量", ...

  7. HTTP中的跨域请求、HTTP报文结构、状态码

    目录 一.前驱知识学习 (1)请求报文 (2)响应报文 二.HTTP中的跨域请求 1. 什么是跨域请求 2.什么是同源策略 3.为什么要设置这种限制 3.1 攻击实例 3.2 攻击原理 4. 怎样取消 ...

  8. Java中格式化输出

    文章目录 一.要点提示 二.常用的格式标识符 三.格式标识符的解释 四.指定宽度和精度的例子 五.格式化输出语法 六.注意的问题 七.应用 一.要点提示 在控制台上显示格式化输出:System.out ...

  9. 剖析PHP中的输出缓冲

    剖析PHP中的输出缓冲 本文按署名·非商业用途·保持一致授权 作者:  ,发表于2005年12月24日01时54分 我们先来看一段代码. <?php for ($i=10; $i>0; $ ...

最新文章

  1. 深入实践Spring Boot3.1 模型设计
  2. 学会用好 Visual Studio Code
  3. 程序运行正常,数据库没反应
  4. 直播 | WWW 2021论文解读:强化学习与互信息驱动的子图神经网络
  5. Java web—Servlet的请求与响应
  6. JavaScript中常用的事件代码及实例
  7. 深度学习优化算法总结
  8. 计算机科学与技术初级知识,计算机科学与技术专业课程有哪些
  9. android sqlite 操作类封装,[Android] Sqlite 数据库操做 工具封装类
  10. 计算机主机图片开机按钮,解决电脑开机按钮无法使用方法
  11. PHP 图片处理类 错误处理方法:
  12. Codeforces Round #102 (Div. 1) D Help Shrek and Donkey 2
  13. 前端多人开发统一代码格式化工具
  14. Spring jar包下载
  15. I2C总线协议详解(特点、通信过程、典型I2C时序)
  16. Android Studio应用Freeline光速编译APK
  17. 《庄子·杂篇·列御寇第三十二》
  18. Linux系统编程.NO7——目录操作函数
  19. runtime 黑魔法
  20. TGA--数据压缩第二次作业

热门文章

  1. 为硬件保留的存储空间怎么释放出来?
  2. 非科班出身这么理解货币乘数
  3. adb ps shell 查看进程_adb中ps命令的详解
  4. 逻辑回归logistic原理(python代码实现)
  5. wire tox_Tox-rs的漫长旅程。 第1部分
  6. 区别:KL散度,JS散度,Wasserstein距离(EMD)
  7. 第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组
  8. Rust 中的指针:Box、Rc、Cell、RefCell
  9. 劫持outlook与IE浏览器实现权限维持
  10. 爬取B站直播流 - http+flv的相关研究