首页 快递行业资讯 前后端别离电商办理体系实战 05 编写订单接口

前后端别离电商办理体系实战 05 编写订单接口

结构订单模型 在之前的教程中,咱们现已完成了订单随机数据的生成了,在本教程中,咱们将完成订单数据模型和订单数据接口,并向数据库中刺进1w条随机数据,用于在前端进行测验。 咱们的库满…


结构订单模型

在之前的教程中,咱们现已完成了订单随机数据的生成了,在本教程中,咱们将完成订单数据模型和订单数据接口,并向数据库中刺进1w条随机数据,用于在前端进行测验。

咱们的库满足强壮,看上去这个需求比较复杂,可是实际上只需要几行代码就能够处理。

跟着咱们的教程往下看,你就知道该怎么完成了。


运用zdppy_orm生成订单模型

首要看一下完好代码:

      import logging

import zdppy_env
from zdppy_orm import *
from zdppy_orm.model import MysqlDatabase, SoftDeleteModel

# 创立日志目标
logger = logging.getLogger("zdppy_orm")
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())

# 创立数据库衔接
# 从环境变量读取
zdppy_env.load()
AUTH_DATABASE = zdppy_env.get("AUTH_DATABASE")  # 数据库
AUTH_HOST = zdppy_env.get("AUTH_HOST")  # 主机地址
AUTH_USER = zdppy_env.get("AUTH_USER")  # 用户名
AUTH_PASSWORD = zdppy_env.get("AUTH_PASSWORD")  # 暗码
if not AUTH_DATABASE:
    raise "从环境变量加载 AUTH_DATABASE 失利"
if not AUTH_HOST:
    raise "从环境变量加载 AUTH_HOST 失利"
if not AUTH_USER:
    raise "从环境变量加载 AUTH_USER 失利"
if not AUTH_PASSWORD:
    raise "从环境变量加载 AUTH_PASSWORD 失利"

db = MysqlDatabase(AUTH_DATABASE, host=AUTH_HOST,
                   user=AUTH_USER, passwd=AUTH_PASSWORD)


class BaseModel(SoftDeleteModel):
    class Meta:
        database = db  # 这里是数据库链接,为了便利树立多个表,能够把这个部分提炼出来构成一个新的类


class Order(BaseModel):
    """订单模型"""
    name = IntegerField(default=0)  # 0一般订单 1秒杀订单
    price = DecimalField(null=False)
    buyer = CharField(default="")
    time = DateTimeField()
    role = BooleanField(default=False)
    state = BooleanField(default=False)
    payType = BooleanField(default=False)
    source = CharField(max_length=255, default="")
    phone = CharField(max_length=11, default="")

    class Meta:
        table_name = 'order'


def init_auth_db():
    db.connect()
    db.drop_tables([Order])
    db.create_tables([Order])


if __name__ == "__main__":
    init_auth_db()

订单模型的中心代码如下,和之前咱们生成的随机数据结构保持一致:

      class Order(BaseModel):
    """订单模型"""
    name = IntegerField(default=0)  # 0一般订单 1秒杀订单
    price = DecimalField(null=False)
    buyer = CharField(default="")
    time = DateTimeField()
    role = BooleanField(default=False)
    state = BooleanField(default=False)
    payType = BooleanField(default=False)
    source = CharField(max_length=255, default="")
    phone = CharField(max_length=11, default="")

    class Meta:
        table_name = 'order'

初始化订单模型包含创立表,生成表,中心代码如下:

      def init_auth_db():
    db.connect()
    db.drop_tables([Order])
    db.create_tables([Order])

文章字数有限,详细细节假如咱们想要了解的话,能够打赏今后获取安装包进行学习,也能够报名跟我学习的哈。


批量刺进数据

接下来咱们批量刺进100条数据,咱们看看有简略,向数据库刺进1w条数据只需要如下几行代码:

      data = zdppy_random.random_list_dict({
    "name""int(0,2)",
    "price""int(20,501)",
    "buyer""name",
    "time""date",
    "role""bool",
    "state""bool",
    "payType""bool",
    "source""url",
    "phone""phone",
}, size=10000)
zdppy_orm.insert_many(db, data, Order)


查询订单数据

咱们来看看怎么查询订单数据,非常的简略:

      for v in Order.select().dicts()[:20]:
    print(v)


编写订单接口

来到今日最重要的内容了,运用咱们的zdppy_api库开发一个订单接口,完好代码如下:

      import logging

import zdppy_env
from zdppy_api import Api, Group, Depends, ResponseData
from zdppy_api_auth import auth_group, verify_token
from zdppy_orm import *
from zdppy_orm.model import MysqlDatabase, SoftDeleteModel

# 加载环境变量
zdppy_env.load()

# 创立日志目标
logger = logging.getLogger("zdppy_orm")
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())

# 创立数据库衔接
# 从环境变量读取
zdppy_env.load()
AUTH_DATABASE = zdppy_env.get("AUTH_DATABASE")  # 数据库
AUTH_HOST = zdppy_env.get("AUTH_HOST")  # 主机地址
AUTH_USER = zdppy_env.get("AUTH_USER")  # 用户名
AUTH_PASSWORD = zdppy_env.get("AUTH_PASSWORD")  # 暗码
if not AUTH_DATABASE:
    raise "从环境变量加载 AUTH_DATABASE 失利"
if not AUTH_HOST:
    raise "从环境变量加载 AUTH_HOST 失利"
if not AUTH_USER:
    raise "从环境变量加载 AUTH_USER 失利"
if not AUTH_PASSWORD:
    raise "从环境变量加载 AUTH_PASSWORD 失利"

db = MysqlDatabase(AUTH_DATABASE, host=AUTH_HOST,
                   user=AUTH_USER, passwd=AUTH_PASSWORD)


class BaseModel(SoftDeleteModel):
    class Meta:
        database = db  # 这里是数据库链接,为了便利树立多个表,能够把这个部分提炼出来构成一个新的类


class Order(BaseModel):
    """订单模型"""
    name = IntegerField(default=0)  # 0一般订单 1秒杀订单
    price = DecimalField(null=False)
    buyer = CharField(default="")
    time = DateTimeField()
    role = BooleanField(default=False)
    state = BooleanField(default=False)
    payType = BooleanField(default=False)
    source = CharField(max_length=255, default="")
    phone = CharField(max_length=11, default="")

    class Meta:
        table_name = 'order'


# 创立运用
app = Api(cors_config={})
order_group = Group()


@order_group.get("/", dependencies=[Depends(verify_token)])
async def get_order(page: int = 1, size: int = 20):
    order_list = Order.select().order_by(-Order.id).paginate(page, size).dicts()
    response = ResponseData()
    response.data = list(order_list)
    return response


v1 = Group()
v1.add_group(auth_group, prefix="/auth")
v1.add_group(order_group, prefix="/order")
app.add_group(v1, prefix="/v1")

if __name__ == "__main__":
    db.connect()
    import uvicorn

    # http://localhost:8889/docs
    uvicorn.run(, reload=True,
                host="0.0.0.0", port=8889)

其间大部分都是咱们之前学过的内容,中心代码如下:

      @order_group.get("/", dependencies=[Depends(verify_token)])
async def get_order(page: int = 1, size: int = 20):
    order_list = Order.select().order_by(-Order.id).paginate(page, size).dicts()
    response = ResponseData()
    response.data = list(order_list)
    return response

咱们运用zdppy_orm结构,分页查询到列表数据,并传递给前端。zdppy_api结构还给咱们供给了一个快捷的接口文档,便于咱们调试,咱们在接口文档中恳求订单接口,成果如下:

呼应成果如下:


总结

在实在的开发中,往往有运用纯SQL操作和运用ORM结构两种挑选,我个人是比较喜爱直接操作SQL的,可是不得不说,在封装许多结构,在快速开发中,运用ORM结构能够让咱们事半功倍,咱们只需要专心于事务逻辑即可。

有了这些底层库今后,咱们要做开发就变得非常简略了。

现在,订单接口现已开发好了,接下来是时分回到前端,去持续开发前端页面了。

本文来自网络,不代表快递资讯网立场。转载请注明出处: http://www.llaiot.com/express-industry-information/2771.html
上一篇
下一篇

为您推荐

返回顶部