Web开发 ------ 基于Django+Vue网上购物商城(二):商品以及商品类 API接口设计

文章目录Web开发 ------ 基于Django+Vue网上购物商城(二)Web开发 ------ 基于Django+Vue网上购物商城(二)准备工作:登陆云片网,生成短信的API-key。(开发者认证时长半个小时)...
摘要由CSDN通过智能技术生成

Web开发 ------ 基于Django+Vue网上购物商城(二)

完整项目地址:https://gitee.com/dadadaliuliuliiu/ShopProject

一、API接口开发 准备工作

1.准备工作

安装模块 djangorestframework:用于构建Web API 的强大而灵活的工具包

pip install -i https://pypi.douban.com/simple djangorestframework

在extre_apps下建一个db_tools包存放我们批量导入商品信息数据的文件
在根目录ShopProject下创建一个media目录,存放相关商品图片
之前我们在setting中已经设置了图片存放路径,如下:

# 设置media的保存路径: media/hello.png
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

在这里插入图片描述

2.批量导入商品分类信息和商品信息数据

manage.py

import sys
# 获取脚本传入的参数, 列表存储。 第一个元素是脚本的名称, 第二个元素是脚本传入的第一个参数
print(sys.argv)
设置中文、时区
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'

在这里插入图片描述

#ShopProject\app\extra_apps\db_tools

# -*- coding: utf-8 -*-


#独立使用django的model
import sys
import os


# 加载Django配置和Django APP的注册。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ShopProject.settings")
import django

"""
  Configure the settings (this happens as a side effect of accessing the
    first setting), configure logging and populate the app registry.
"""
django.setup()

from app.goods.models import GoodsCategory
from app.extra_apps.db_tools.data.category_data import row_data

# 依次遍历一级分类数据
for lev1_cat in row_data:
    lev1_intance = GoodsCategory()
    lev1_intance.code = lev1_cat["code"]
    lev1_intance.name = lev1_cat["name"]
    lev1_intance.category_type = 1
    lev1_intance.save()
    print("添加一级分类 [%s] 成功" % (lev1_intance.name))
    #  依次遍历指定的一级分类包含的二级分类
    for lev2_cat in lev1_cat["sub_categorys"]:
        lev2_intance = GoodsCategory()
        lev2_intance.code = lev2_cat["code"]
        lev2_intance.name = lev2_cat["name"]
        lev2_intance.category_type = 2
        # 指定二级分类对象的父分类对象。
        lev2_intance.parent_category = lev1_intance
        lev2_intance.save()
        print("  --添加二级分类 [%s] 成功" % (lev2_intance.name))
        #  依次遍历指定的二级分类包含的三级分类
        for lev3_cat in lev2_cat["sub_categorys"]:
            lev3_intance = GoodsCategory()
            lev3_intance.code = lev3_cat["code"]
            lev3_intance.name = lev3_cat["name"]
            lev3_intance.category_type = 3
            lev3_intance.parent_category = lev2_intance
            # 讲Object对象写入数据库中.(ORM)
            lev3_intance.save()
            print("    ----添加三级分类 [%s] 成功" % (lev3_intance.name))

类别
数据库加载成功
在这里插入图片描述
商品信息加载

#ShopProject\app\extra_apps\db_tools\import_goods_data.py
# -*- coding: utf-8 -*-


import os
import sys

pwd = os.path.dirname(os.path.realpath(__file__))
sys.path.append(pwd + "../")
# 加载Django配置和Django APP的注册。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ShopProject.settings")

import django

django.setup()
# 注意:导入数据库模型,一定要先加载Django配置和注册Django app。
from app.goods.models import Goods, GoodsCategory, GoodsImage

from app.extra_apps.db_tools.data.product_data import row_data

# 依次遍历商品信息
for goods_detail in row_data:
    # 实例化商品对象;
    goods = Goods()
    goods.name = goods_detail["name"]
    # 价格处理方式: '¥232元'处理格式为 232
    goods.market_price = float(int(goods_detail["market_price"].replace("¥", "").replace("元", "")))
    goods.shop_price = float(int(goods_detail["sale_price"].replace("¥", "").replace("元", "")))
    goods.goods_brief = goods_detail["desc"] if goods_detail["desc"] is not None else ""
    goods.goods_desc = goods_detail["goods_desc"] if goods_detail["goods_desc"] is not None else ""
    # 将产品轮播图片的第一张图片作为商品列表页显示的图片
    goods.goods_front_image = goods_detail["images"][0] if goods_detail["images"] else ""

    # 商品的三级分类
    # 将商品和商品分类关联。 商品分类只存储的三级分类(可以根据三级分类找到二级分类再找到一级分类)
    category_name = goods_detail["categorys"][-1]  # 获取到三级分类的名称
    category = GoodsCategory.objects.filter(name=category_name)  # 根据分类名称找到分类对象。

    if category:
        # 将商品分类对象和商品对象绑定。
        goods.category = category[0]
    goods.save()
    print("添加商品 [%s] 成功" % (goods.name))

    # 添加商品图片
    for goods_image in goods_detail["images"
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
手把手进行Django Vue前后端分离开发的入门,可以通过以下步骤实现: 1. 首先,确保已经安装了Python和Node.js,以及相应的开发环境。 2. 创建一个Django项目,可以使用命令`django-admin startproject project_name`来创建项目。 3. 进入项目目录,创建一个Django应用,可以使用命令`python manage.py startapp app_name`来创建应用。 4. 在Django中配置应用,包括数据库连接、URL路由等,可在`settings.py`中进行配置。 5. 创建数据库模型,可以在应用目录下的`models.py`中定义模型,表示数据表结构。 6. 执行迁移命令,将模型映射到数据库中,可使用命令`python manage.py makemigrations`和`python manage.py migrate`执行。 7. 在应用目录下创建视图函数,用于处理客户端的请求,其中可以包括接收和发送JSON数据。 8. 在`urls.py`中配置URL路由,将请求的URL与对应的视图函数进行关联。 9. 使用Vue CLI创建Vue项目,可以使用命令`vue create frontend`来创建项目。 10. 在Vue项目中安装axios,用于发送HTTP请求,可以使用命令`npm install axios`进行安装。 11. 按照需求,在Vue组件中编写前端代码,可以使用axios与后端进行数据交互,获取数据并展示。 12. 运行Django项目,可以使用命令`python manage.py runserver`来启动Django服务器。 13. 运行Vue项目,可以使用命令`npm run serve`来启动Vue开发服务器。 通过以上步骤,即可实现Django Vue前后端分离开发入门。在实践中,可以进一步学习和了解DjangoVue的相关文档和教程,通过不断实践和探索,提升开发技能。相关的示例代码和项目实例可以参考知乎上的文章。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值