flask flask-restful 前后端分离

 

前后端分离区别

#前后端不分离:
  render template('index.html',users=users)


#  前后端分离:
  后台返回json字符串 :  jsonify()

  前端用ajax 接受数据


 

Flask类视图 和 RESTfu  主要用于前后端分离

安装 flask-restful

1
pip install flask-restful

 目录重构

创建一个文件apis 文件

1
2
3
4
5
6
7
8
# apis 文件<br>from flask restful import Resource
#类视图:CBV Class Based View
#视图函数:FBV Function Based View
class HelloResouce(Resource):
  def get(self):
    return'get请求
  def post(self):
    return'post请求

 exts 文件代码

1
2
3
4
5
6
7
8
9
10
# exts文件<br>from flask sqlalchemy import sQLAlchemy
from flask migrate import Migrate
from flask restful import Api   # 引入库<br>
db = SQLAlchemy()
migrate = Migrate()
api = Api()  // 创建库<br>
def init_exts(app):
  db.init_app(app=app)
  migrate.init_app(app=app, db=db)<br>  # 初始化
  api.init app(app=app)

 再创建一个路由文件  urls 文件

1
2
3
4
from .exts import api
from .apis import *
# 路由   前面定义的类    后面是路径
api.add_resource(HelloResouce, '/hello/')

 init 文件 代码

1
2
3
4
from flask import Flask
from .exts import init_exts   // 引入第三方插件<br>from .urls import *  // 必须导入路由 <br><br>
def create_app():
  app = Flask(_name_)

 

app 文件代码

1
2
3
4
from App import create_app
app = create_app()
if __name__ = '__main__':
  app.run(debug=True)<br><br>  # 初始化插件<br>  init exts(app=app)<br>  return app

 


 

字段格式化

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

1
2
3
4
5
6
7
8
#格式化字段
user_fields ={
  msg': fields.string,
  status':fields.Integer,
  data':fields.string(attribute='private data')
  default data': fields.string(default='1')
 
}

定义好的格式通过装饰器进行使用

  注意 , 格式化字段中  没有定义的字段, 返回数据中有的也不会显示 , 

     格式化字段中 , 有定义的, 返回数据中没有的 , 可以使用默认值 

1
2
3
4
5
# @marshal_with( 需要返回的数据格式 ) , return返回字典就ok了
class Users(Resource):
  @marshal_with(user_fields)
  def get(self):
    return{'msg':'呵呵''data':'没有数据''age':'22''private_data':'表中数据"}

字段格式化的  第二种方式  是一个对象  data': fields.Nested(user_fields)

1
2
3
4
5
6
7
8
9
# 定义字段格式化  <br><br>user_fields ={
  'id': fields.Integer,
  'name': fields.string.
  'age': fields.Integer<br>}
ret_fields2={
  'status':fields.Integer,
  'msg': fields.string,
  # user对象
  'data': fields.Nested(user_fields)<br>}

 字段格式化 第三种  对象是列表  

1
2
3
4
5
6
7
8
# 字段格式化
user_fields2 ={
  name':fields.string,
  age':fields.Integer,<br>}
ret_fields3={
  status':fields.Integer,
  msg': fields.string,
  data': fields.List(fields.Nestedtuser fields2))<br>}

 

参数解析

 

posted @   我在春天等伱  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示