[ flask ] flask-restful 实现嵌套的有关系的输出字段
问题描述:
1. 先说明数据关系:有用户,和菜谱。一个用户可以拥有多个菜谱:一对多的关系

2. resources/users.py 的输出字段:
user_fields = {
'id':fields.Integer,
'username':fields.String,
'email':fields.String,
'avatar':fields.String
}
3. resources/cookbooks.py 的输出字段:
cookbook_fields = {
'id':fields.Integer,
'name':fields.String,
'description':fields.String,
'imageUrl':fields.String,
'myfoods':fields.String,
'step':fields.String,
'author':????
}
如上所述,我想返回一个菜谱的时候同时返回这个菜谱的作者信息(见上面高亮部分),该如何实现呢?
具体实现:
from flask_restful import Resource,fields,marshal_with,reqparse,inputs,marshal
from app.api.resources.users import user_fields class AuthorRaw(fields.Raw):
def output(self,key,cookbook):
return marshal(cookbook.users,user_fields) cookbook_fields = {
'id':fields.Integer,
'name':fields.String,
'description':fields.String,
'imageUrl':fields.String,
'myfoods':fields.String,
'step':fields.String,
'author':AuthorRaw
}
如上所示,我们定义 output(self,key,cookbook)方法来覆盖父类的output方法
其中,第二个参数cookbook指向Cookbook的实例,第一个参数是实例中的一个字段
最终效果:

备注:
用 fields.Nested 啊,它不香么
详情见:https://github.com/LongchuanYu/wefoods_backend
[ flask ] flask-restful 实现嵌套的有关系的输出字段的更多相关文章
- Python flask 基于 Flask 提供 RESTful Web 服务
转载自 http://python.jobbole.com/87118/ 什么是 REST REST 全称是 Representational State Transfer,翻译成中文是『表现层状态转 ...
- flask开发restful api系列(8)-再谈项目结构
上一章,我们讲到,怎么用蓝图建造一个好的项目,今天我们继续深入.上一章中,我们所有的接口都写在view.py中,如果几十个,还稍微好管理一点,假如上百个,上千个,怎么找?所有接口堆在一起就显得杂乱无章 ...
- flask开发restful api
flask开发restful api 如果有几个原因可以让你爱上flask这个极其灵活的库,我想蓝图绝对应该算上一个,部署蓝图以后,你会发现整个程序结构非常清晰,模块之间相互不影响.蓝图对restfu ...
- 使用 Python & Flask 实现 RESTful Web API
环境安装: sudo pip install flask Flask 是一个Python的微服务的框架,基于Werkzeug, 一个 WSGI 类库. Flask 优点: Written in Pyt ...
- 使用 Python 和 Flask 设计 RESTful API
近些年来 REST (REpresentational State Transfer) 已经变成了 web services 和 web APIs 的标配. 在本文中我将向你展示如何简单地使用 Pyt ...
- Flask之RESTFul API前后端分离
Flask之RESTFul API前后端分离 一:虚拟环境搭建的两种方式 1 pipenv的使用 pip install --user pipenv安装pipenv在用户目录下 py -m site ...
- Flask实现RESTful API(注意参数位置解析)
准备工作 首先安装flask_restful三方组件 pip install flask_restful 在models.py中新建一个类,生成表,往里面插入一些数据.(flask要想使用ORM的话需 ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- Flask - Flask的蓝图(BluePrint)
目录 Flask - Flask的蓝图(BluePrint) 一. 初始Flask蓝图 进阶Flask蓝图 使用蓝图做一个增删改查 1.使用蓝图进行web应用搭建: 2.使用Flask蓝图,查看学生信 ...
随机推荐
- centos7 docker 修改Nginx文件
1.docker 安装 nginx : docker安装Nginx还是很简单的,可以参考百度文章 ,或者参照docker安装mysql :https://www.cnblogs.com/jonrain ...
- feignclient发送get请求,传递参数为对象
feignclient发送get请求,传递参数为对象.此时不能使用在地址栏传递参数的方式,需要将参数放到请求体中. 第一步: 修改application.yml中配置feign发送请求使用apache ...
- IDEA 使用rest client测试
一.进入 rest 控制台 idea 导航栏 ==> Tools ==> HTTP Client ==> Test RESTFUL Web Service 如图: 一般来说,idea ...
- 编译工具grdle部署
目录 一.简介 二.部署 三.测试 一.简介 Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具.在github上,gradle项目很多 ...
- Oracle命名规则
1.长度不能超过三十个字符 2. 不要使用Oracle关键字 比如:id name table 3. 不能使用数字开头 包含:数字 字母 下划线 美元符号 4. 建议用 英文单词,不要去用中 ...
- IPv6 DDNS 阿里云动态解析程序推荐: AliyunDdnsCSharp
IPV6 DDNS 设置 概述 中国移动宽带提供了公网IPv6地址,为了物尽其用,于是折腾了域名到IPv6 的解析服务. 平台使用的阿里云解析DNS,平台提供了接口可以方便的添加与修改解析地址. 本打 ...
- LuoguB2104 矩阵加法 题解
Content 给定两个 \(n\times m\) 的矩阵 \(A,B\),求 \(C=A+B\). 数据范围:\(1\leqslant n,m\leqslant 100\). Solution 我 ...
- LuoguP2097 资料分发1 题解
Content 有一些电脑,一部分电脑有双向数据线连接.如果一个电脑得到数据,它可以传送到的电脑都可以得到数据.现在,你有这个数据,问你至少将其输入几台电脑,才能使所有电脑得到数据. 数据范围:\(n ...
- ELK部署笔记
ELK安装准备工作 准备3台机器,这样才能完成分布式集群的实验,当然能有更多机器更好: 192.168.0.46 192.168.0.150 192.168.0.76 角色划分: 3台机器全部安装jd ...
- Visual Studio 2022有趣又强大的智能辅助编码
工欲善其事,必先利其器 作为一名.Net开发人员,开发利器当然是首选微软自家的:宇宙第一IDE - Visual Studio了. 这不 VS 2022 正式版已经发布近两个月了,我也体验了近两个月, ...