七十八:flask.Restful之flask-Restful標准化返回參數以及准備數據


 

對於一個視圖函數,可以指定好數據結構和字段用於返回,以后使用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)

 

調接口

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM