vue+drf打造前后端分离项目(一)之drf的ViewSet、router和跨域

本文介绍了如何使用Vue和DRF构建前后端分离项目,详细讲解了DRF的ViewSet、Router的使用,并探讨了restful API的最佳实践。此外,还阐述了在DRF中处理图片资源目录配置、商品数据导入以及如何配置跨域策略,以解决django CORS问题。
摘要由CSDN通过智能技术生成

上传的图片资源目录配置:

settings.py:

MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

urls.py:

 # media上传的图片
urlpatterns = [
    re_path(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT})
]
  

 

导入商品种类数据

db_tools/import_category_data.py: 编写脚本导入数据

from db_tools.data.category_data import row_data:db_tools/data/category_data.py 下row_data为数组

__author__ = "westbrook-ding"
__date__ = "2018/10/26 0026 18:53"

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

# os.path.realpath(__file__):获取当前脚本文件的绝对路径
# os.path.dirname(path):文件所在的目录
pwd = os.path.dirname(os.path.realpath(__file__))
# 添加模块搜索目录 djangoShop
sys.path.append(pwd+"../")
# 设置django配置目录  默认会在djangoShop下找
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoShop.settings')


import django
django.setup()

# 引入商品种类class
from goods.models import GoodsCategory
# 引入商品种类数组
from db_tools.data.category_data import row_data

# 保存数据到数据库中
for lev1_cat in row_data:
    lev1_instance = GoodsCategory()
    lev1_instance.code = lev1_cat['code']
    lev1_instance.name = lev1_cat['name']
    lev1_instance.category_type = 1
    lev1_instance.save()

    for lev2_cat in lev1_cat["sub_categorys"]:
        lev2_instance = GoodsCategory()
        lev2_instance.code = lev2_cat['code']
        lev2_instance.name = lev2_cat['name']
        lev2_instance.category_type = 2
        lev2_instance.parent_category = lev1_instance
        lev2_instance.save()

        for lev3_cat in lev2_cat["sub_categorys"]:
            lev3_instance = GoodsCategory()
            lev3_instance.code = lev3_cat['code']
            lev3_instance.name = lev3_cat['name']
            lev3_instance.category_type = 3
            lev3_instance.parent_category = lev2_instance
            lev3_instance.save()

导入商品数据

db_tools/import_good_data.py: 编写脚本导入数据

from db_tools.data.product_data import row_data:db_tools/data/product_data.py 下row_data为数组

__author__ = "westbrook-ding"
__date__ = "2018/10/26 0026 18:53"

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

# os.path.realpath(__file__):获取当前脚本文件的绝对路径
# os.path.dirname(path):文件所在的目录
pwd = os.path.dirname(os.path.realpath(__file__))
# 添加模块搜索目录 djangoShop
sys.path.append(pwd+"../")
# 设置django配置目录  默认会在djangoShop下找
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoShop.settings')


import django
django.setup()

# 引入商品class
from goods.models import Goods, GoodsCategory, GoodsImage
# 引入商品数据数组
from db_tools.data.product_data import row_data

# 保存商品数据
for good_cat in row_data:
    good = Goods()
    good.name = good_cat["name"]
    good.goods_brief = good_cat["desc"] if good_cat["desc"] is not None else ""
    good.goods_desc = good_cat["goods_desc"] if good_cat["goods_desc"] is not None else ""
    good.market_price = float(int(good_cat["market_price"].replace("¥", '').replace("元", "")))
    good.shop_price = float(int(good_cat["sale_price"].replace("¥", '').replace("元", "")))
    good.goods_front_image = good_cat["images"][0]

    category_name = good_cat["categorys"][-1]
    category = GoodsCategory.objects.filter(name=category_name)
    if category is not None:
        good.category = category[0]
    good.save()

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值