对于一个视图函数,可以指定好数据结构和字段用于返回,以后使用ORM模型或者自定义的模型的时候,它会自动获取模型中相应的字段,生成json数据,然后再返回给前端,这需要导入flask_restful.marshal_with装饰器,并且需要写一个字典,来指示要返回的字段名,以及该字段的数据类型

一、简单示例:

一般情况下返回数据

在restful规范中,要求一旦定义好了返回参数,即使这个参数没有值,也要返回,可以将此参数的值设为None返回

返回模型

二、数据准备:

项目代码

import os
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/test'
SQLALCHEMY_TRACK_MODIFICATIONS = False SECRET_KEY = os.urandom(30)

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

from exts import db

class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(50))
email = db.Column(db.String(50)) # 中间表
article_tag_table = db.Table('article_tag',
db.Column('article_id', db.Integer, db.ForeignKey('article.id'), primary_key=True),
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True)) class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100))
content = db.Column(db.Text)
author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
author = db.relationship('User', backref='article')
tags = db.relationship('Tag', secondary=article_tag_table, backref='tags') # 中间表外键 class Tag(db.Model):
__tablename__ = 'tag'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))

from flask import Flask
import config
from exts import db app = Flask(__name__)
app.config.from_object(config)
db.init_app(app) if __name__ == '__main__':
app.run(debug=True)

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app
from exts import db
import models # 导入所有模型 manager = Manager(app)
Migrate(app, db)
manager.add_command('db', MigrateCommand) if __name__ == '__main__':
manager.run()

python manager.py db init 初始化
python manager.py db migrate 生成迁移脚本
python manager.py db upgrade 映射到数据库

添加测试数据

from flask import Flask
import config
from exts import db
from models import User, Article, Tag app = Flask(__name__)
app.config.from_object(config)
db.init_app(app) @app.route('/')
def index():
user = User(username='user1', email='111@qq.com')
article = Article(title='title1', content='content1')
article.author = user
tag1 = Tag(name='python')
tag2 = Tag(name='java')
article.tags.append(tag1)
article.tags.append(tag2)
db.session.add(article)
db.session.commit()
return '数据已增加' if __name__ == '__main__':
app.run(debug=True)

调接口

七十八:flask.Restful之flask-Restful标准化返回参数以及准备数据的更多相关文章

  1. Unity3D研究院之Jenkins的使用(七十八)

    长夜漫漫无心睡眠,来一篇嘿嘿.我相信如果已经用Shell脚本完成IOS和Android打包的朋友一定需要Jenkins 怎么才能让策划打包ipa和apk?怎么才能彻底省去程序的时间,只要在同一局域网内 ...

  2. (七十八)使用第三方框架INTULocationManager实现定位

    前面(第七十五.七十六篇)讲述了如何通过CoreLocation获取位置,授权.获取等相当复杂,如果借助于第三方框架,可以简单的实现授权与定位. 首先在GitHub中搜索LocationManager ...

  3. 七十九:flask.Restful之flask-Restful标准化返回参数示例

    接上一篇的代码和数据 对于复杂结构的数据如果只是定义单一结构的话返回的数据就没意义了,此时定义的数据结构需精确到所有数据的每一个字段有时候要返回的数据结构中,会有比较复杂的数据结构,证实后可以使用一些 ...

  4. 《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)

    1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包 ...

  5. 第五百七十八、九天 how can I 坚持

    这样下去不行啊 ,昨天晚上回来捣鼓了一晚上手机,看个视频还经常开小差,得全力以赴了,不能抱着打酱油的心态了,加油. 今天和yj聊了聊,好多事啊,不能一心工作了,还得考虑结婚,也是醉了. 努力吧,先把考 ...

  6. salesforce零基础学习(七十八)线性表链形结构简单实现

    前两篇内容为栈和队列的顺序结构的实现,栈和队列都是特殊的线性表,线性表除了有顺序结构以外,还有线性结构. 一.线性表的链形结构--链表 使用顺序存储结构好处为实现方式使用数组方式,顺序是固定的.所以查 ...

  7. Java开发笔记(七十八)面向对象的后门——反射

    作为一门面向对象的编程语言,Java认为一切皆是对象,每个对象都能归属于某个类,甚至每个类均可提取出一种特殊的类型,即Class类型.早在前面介绍多态的时候,就提到每个类都存在独一无二的基因,通过比较 ...

  8. 第七十八课 最短路径(Dijkstra)

    核心思想是从已知的最短路径推算未知的最短路径. 添加程序: #ifndef GRAPH_H #define GRAPH_H #include "Object.h" #include ...

  9. leecode第七十八题(子集)

    class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { vect ...

随机推荐

  1. Redis06-Redis集群

    Redis集群 介绍 1.单机.单实例的持久化方式 在我们之前的课程中,我搭建了一个单机,单进程,缓存redis.我们使用rdb,aof持久化,用来确保数据的安全. rdb(relation-ship ...

  2. [工具] fierce--子域收集

    简介 fierce 是使用多种技术来扫描目标主机IP地址和主机名的一个DNS服务器枚举工具.运用递归的方式来工作.它的工作原理是先通过查询本地DNS服务器来查找目标DNS服务器,然后使用目标DNS服务 ...

  3. Springboot整合Ehcache 解决Mybatis二级缓存数据脏读 -详细

    前面有写了一篇关于这个,但是这几天又改进了一点,就单独一篇在详细说明一下 配置 application.properties ,启用Ehcache # Ehcache缓存 spring.cache.t ...

  4. Java笔试题及答案

    1.下列不可作为java语言修饰符的是(D) A) a1 B) $1 C) _1 D) 11 答案:java标识符不能以数字开头,包含英文字母,数字,下划线以及$ 2.有一段java 应用程序,它的主 ...

  5. solr介绍

    solr架构图: 以下是Apache Solr的主要构建块(组件) 请求处理程序 - 发送到Apache Solr的请求由这些请求处理程序处理.请求可以是查询请求或索引更新请求.根据这些请示的要求来选 ...

  6. 【三】材质反射属性模型BRDF

    双向反射分布函数(BRDF:Bidirecitonal Reflectance Distribution Function) 用来描述物体表面对光的反射性质 预备知识 BRDF的定义和性质 BRDF模 ...

  7. USACO14MAR The Lazy Cow(Gold)

    题目 题意:平面上有 \(n\) 块草地,第 \(i\) 块草地坐标为 \((x_i,y_i)\) ,上面有 \(g_i\) 个单位的草.Bessie 可以吃到距离起始点不超过 \(k\)(这里是曼哈 ...

  8. vue、Element 点击按钮以弹窗形式预览pdf文件

    直接上代码吧 <div > <el-button type="success" size="small" @click="isVie ...

  9. yii ActiveRecord

    在活动记录里自定义属性(数据表里没有的属性), 起初没有注意到问题. 在这个继承了activeRecord的模型中, 还自定义了很多方法,  此为前提.  出现的问题是: 使用属性获取不到数据库的字段 ...

  10. jQuery.post(url, [data], [callback], [type])

    jQuery.post(url, [data], [callback], [type]) 概述 通过远程 HTTP POST 请求载入信息. 这是一个简单的 POST 请求功能以取代复杂 $.ajax ...