首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue+Django2.0 REST framework打造前后端分离的生鲜电商项目(三)设计数据库以及导入原始数据

Vue+Django2.0 REST framework打造前后端分离的生鲜电商项目(三)设计数据库以及导入原始数据

作者头像
玩蛇的胖纸
发布2018-06-08 12:59:40
1.1K0
发布2018-06-08 12:59:40
举报

一、项目初始化:

1.安插件

安装django就不必说了,下载安装mysql,还有跟数据库连接的相关包pymysql,做图片处理的包pillow

安装 djangorestframework、markdown、django-filter ( 如果发生安装超时,可以隔几秒再重新执行安装命令,我也按了好几次)

pip install djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter 

2.建项目配置与数据库链接

打开pycharm,新建django目录取名MXshop,同时在项目下新建一个app:users

在settings.py 中配置数据库信息:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "mxshop",
        'USER':'root',
        'PASSWORD':'root',
        'HOST':"127.0.0.1",
     'PORT':'3306',
     'OPTIONS':{'init_command':'SET default_storage_engine=INNODB;'}

} }

在MXshop目录下的__init.py__中加入代码:

import pymysql
pymysql.install_as_MySQLdb()

打开mysql 5.7 Command Line Client-Unicode 新建数据库mxshop

create database mxshop;
show databases;

pycharm连接数据库:

点击pycharm界面右上角的database侧拉框,打开database面板,在面板的左上角点击“+”,然后点击source,选择新建mysql连接,进入连接界面,填写数据库名、root名、root密码,然后点击“test connection” ,点击ok。然后在database面板中,就可以直接直观的管理数据库了!

更新数据:

在pycharm下方点开Terminal终端,执行命令:

python manage.py makemigrations
python manage.py migrate

在pycharm下方点击run按钮,启动项目  

访问http://127.0.0.1:8000/  看到django项目启动成功页面。

3.项目结构基本配置

项目目录下新建包目录:apps用于存放新建的app,将user目录导入apps,右键mark一下(也可以不mark)

项目目录下新建包目录:extra_apps用于存放第三方app(后面的xadmin),右键mark一下

项目目录下新建文件夹目录:media

然后在settings.py 中找到代码段:

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

增添代码修改为:

import os,sys

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,BASE_DIR)
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
sys.path.insert(0,os.path.join(BASE_DIR,'extra_apps'))

 重新启动,访问http://127.0.0.1:8000/  没报错的话,项目初始化就完成了。

二、Model设计

1.根据电商项目的需求分析,需要四个app对应用户、商品、交易、操作:users、goods、trade、user_operation

打开Terminal终端,执行新建app命令:

python manage.py startapp trade
python manage.py startapp goods
python manage.py startapp user_operation

将users、goods、trade、user_operation导入apps目录下

然后在settings.py中注册:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'users',
    'goods',
    'trade',
    'user_operation',
]

2.model设计  

1.user model 设计

设计整个项目系统的时候,第一步一定是设计用户的model

在apps/users/models.py中:

 1 from datetime import datetime
 2 
 3 from django.db import models
 4 from django.contrib.auth.models import AbstractUser
 5 # Create your models here.
 6 
 7 
 8 class UserProfile(AbstractUser):
 9     '''
10     用户
11     '''
12     name=models.CharField(max_length=30,null=True,blank=True,verbose_name='姓名')
13     birthday=models.DateField(null=True,blank=True,verbose_name='出生日期')
14     gender=models.CharField(max_length=6,choices=(('male','男'),('female','女')),default='male')
15     mobile=models.CharField(max_length=11,verbose_name='电话')
16     email = models.CharField(max_length=100,null=True,blank=True,verbose_name='邮箱')
17     class Meta:
18         verbose_name='用户'
19         verbose_name_plural=verbose_name
20 
21     def __str__(self):
22         return self.name
23 
24 
25 class VerifyCode(models.Model):
26     '''
27     短信验证码
28     '''
29     code=models.CharField(max_length=10,verbose_name='验证码')
30     mobile = models.CharField(max_length=11, verbose_name='电话')
31     add_time=models.DateTimeField(default=datetime.now,verbose_name='添加时间')
32 
33     class Meta:
34         verbose_name = '验证码'
35         verbose_name_plural = verbose_name
36 
37     def __str__(self):
38         return self.code

然后在settings.py中找到代码段:

ALLOWED_HOSTS = []

# Application definition

插入设置新用户表的设置代码:

ALLOWED_HOSTS = []

AUTH_USER_MODEL='users.UserProfile'

# Application definition

2.goods的model设计

在apps/goods/models.py中:

  1 from datetime import datetime
  2 
  3 from django.db import models
  4 from DjangoUeditor.models import UEditorField
  5 # Create your models here.
  6 
  7 
  8 class GoodsCategory(models.Model):
  9     '''
 10     商品类别
 11     '''
 12     CATEGORY_TPYE=(
 13         (1,'一级类目'),
 14         (2,'二级类目'),
 15         (3,'三级类目'),
 16     )
 17     name=models.CharField(default='',max_length=30,verbose_name='类别名',help_text='类别名')
 18     code=models.CharField(default='',max_length=30,verbose_name='类别code',help_text='类别code')
 19     desc=models.CharField(default='',max_length=200,verbose_name='类别描述',help_text='类别描述')
 20     category_type=models.IntegerField(choices=CATEGORY_TPYE,default=1,verbose_name='类目级别',help_text='类目级别')
 21     parent_category=models.ForeignKey('self',null=True,blank=True,verbose_name='父类目级别',
 22                                       related_name='sub_cat',on_delete=models.CASCADE)
 23     is_tab=models.BooleanField(default=False,verbose_name='是否导航',help_text='是否导航')
 24     add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
 25     class Meta:
 26         verbose_name='商品类别'
 27         verbose_name_plural=verbose_name
 28 
 29     def __str__(self):
 30         return self.name
 31 
 32 
 33 class GoodsCategoryBrand(models.Model):
 34     '''
 35     品牌名
 36     '''
 37     category = models.ForeignKey(GoodsCategory,null=True,blank=True,verbose_name='商品类目', on_delete=models.CASCADE)
 38     name=models.CharField(default='',max_length=30,verbose_name='品牌名',help_text='品牌名')
 39     desc=models.TextField(default='',max_length=200,verbose_name='品牌描述',help_text='品牌描述')
 40     image=models.ImageField(max_length=200,upload_to='brand/images/')
 41     add_time=models.DateTimeField(default=datetime.now,verbose_name='添加时间')
 42     class Meta:
 43         verbose_name='品牌'
 44         verbose_name_plural=verbose_name
 45 
 46     def __str__(self):
 47         return self.name
 48 
 49 
 50 class Goods(models.Model):
 51     '''
 52     商品
 53     '''
 54     category=models.ForeignKey(GoodsCategory,null=True,blank=True,verbose_name='商品类目',on_delete=models.CASCADE)
 55     goods_sn=models.CharField(max_length=50,default='',verbose_name='商品唯一货号')
 56     name=models.CharField(max_length=300,verbose_name='商品名')
 57     click_num=models.IntegerField(default=0,verbose_name='点击数')
 58     sold_num=models.IntegerField(default=0,verbose_name='商品销售量')
 59     goods_num=models.IntegerField(default=0,verbose_name='库存数')
 60     market_price=models.FloatField(default=0,verbose_name='市场价格')
 61     shop_price = models.FloatField(default=0,verbose_name='本店价格')
 62     goods_brief=models.TextField(max_length=500,verbose_name='商品简短描述')
 63     goods_desc=UEditorField(verbose_name='内容',imagePath='goods/images/',
 64                             width=1000,height=300,filePath='goods/files/',default='')
 65     ship_free=models.BooleanField(default=True,verbose_name='是否承担运费')
 66     goods_front_image=models.ImageField(upload_to='',null=True,blank=True,verbose_name='封面图')
 67     is_new=models.BooleanField(default=False,verbose_name='是否新品')
 68     is_hot=models.BooleanField(default=False,verbose_name='是否热销')
 69     add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
 70     class Meta:
 71         verbose_name='商品'
 72         verbose_name_plural=verbose_name
 73     def __str__(self):
 74         return self.name
 75 
 76 
 77 class GoodsImage(models.Model):
 78     '''
 79     商品图片
 80     '''
 81     goods=models.ForeignKey(Goods,verbose_name='商品',related_name='images',on_delete=models.CASCADE)
 82     image=models.ImageField(upload_to='',verbose_name='图片',null=True,blank=True)
 83     add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
 84 
 85     class Meta:
 86         verbose_name='商品图片'
 87         verbose_name_plural=verbose_name
 88 
 89     def __str__(self):
 90         return self.goods.name
 91 
 92 
 93 class Banner(models.Model):
 94     '''
 95     轮播的商品
 96     '''
 97     goods=models.ForeignKey(Goods,verbose_name='商品',on_delete=models.CASCADE)
 98     image=models.ImageField(upload_to='banner',verbose_name='轮播图片')
 99     index=models.IntegerField(default=0,verbose_name='轮播顺序')
100     add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
101 
102     class Meta:
103         verbose_name = '轮播商品'
104         verbose_name_plural = verbose_name
105 
106     def __str__(self):
107         return self.goods.name

3.trade交易的model设计

第三方扩展功能代码,往往需要调用用户表(在本项目中是apps/users/models.py中的UserProfile表),而开发第三方扩展代码的人也许 并不知道用户表在哪个app的models.py里,也不知道用户表叫什么名,所以用

from django.contrib.auth import get_user_model
User=get_user_model()

代替

from users.models import UserProfile

实现用户表的导入,更加合理。

在apps/strade/models.py中:

from datetime import datetime

from django.db import models
from django.contrib.auth import get_user_model
from goods.models import Goods
User=get_user_model()

# from users.models import UserProfile
# Create your models here.


class ShoppingCar(models.Model):
    """
    购物车
    """
    user=models.ForeignKey(User,verbose_name='用户',on_delete=models.CASCADE)
    goods=models.ForeignKey(Goods,verbose_name='商品',on_delete=models.CASCADE)
    goods_num=models.IntegerField(default=0,verbose_name='购买数量')
    add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')

    class Meta:
        verbose_name = '购物车'
        verbose_name_plural = verbose_name

    def __str__(self):
        return '%s(%d)'.format(self.goods.name,self.goods_num)


class OrderInfo(models.Model):
    """
    订单
    """

    ORDER_STATUS=(
        ('success','成功'),
        ('cancel','取消'),
        ('cancel','待支付'),
    )
    # PAY_TYPE=(
    #     ('alipay','支付宝'),
    #     ('wechat','微信'),
    # )考虑篇幅,只讲支付宝

    user = models.ForeignKey(User, verbose_name='用户', on_delete=models.CASCADE)
    order_sn=models.CharField(max_length=30,unique=True,verbose_name='订单号')
    trade_no=models.CharField(max_length=100,unique=True,null=True,blank=True,verbose_name='交易号')
    pay_status=models.CharField(choices=ORDER_STATUS,max_length=10,verbose_name='订单状态')
    post_script=models.CharField(max_length=200,verbose_name='订单留言')
    order_mount=models.FloatField(default=0.0,verbose_name='订单金额')
    pay_time=models.DateTimeField(null=True,blank=True,verbose_name='支付时间')

    # 用户信息
    address=models.CharField(max_length=100,default='',verbose_name='收货地址')
    signer_name=models.CharField(max_length=20,default='',verbose_name='签收人')
    signer_mobile=models.CharField(max_length=11,verbose_name='联系电话')
    add_time=models.DateTimeField(default=datetime.now,verbose_name='添加时间')

    class Meta:
        verbose_name = '订单'
        verbose_name_plural = verbose_name

    def __str__(self):
        return str(self.order_sn)


class OrderGoods(models.Model):
    """
    订单的商品详情
    """
    order=models.ForeignKey(OrderInfo,verbose_name='订单信息',on_delete=models.CASCADE)
    goods=models.ForeignKey(Goods,verbose_name='商品',on_delete=models.CASCADE)
    goods_num=models.IntegerField(default=0,verbose_name='商品数量')
    add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')

    class Meta:
        verbose_name = '订单商品'
        verbose_name_plural = verbose_name

    def __str__(self):
        return str(self.order.order_sn)

4.用户操作(user_operation)的model设计

在apps/user_operation/models.py中:

 1 from datetime import datetime
 2 
 3 from django.db import models
 4 from goods.models import Goods
 5 from django.contrib.auth import get_user_model
 6 User=get_user_model()
 7 # Create your models here.
 8 
 9 
10 class UserFav(models.Model):
11     """
12     用户收藏
13     """
14     user = models.ForeignKey(User, verbose_name='用户', on_delete=models.CASCADE)
15     goods = models.ForeignKey(Goods, verbose_name='商品', on_delete=models.CASCADE)
16     add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
17 
18     class Meta:
19         verbose_name = '用户收藏'
20         verbose_name_plural = verbose_name
21 
22     def __str__(self):
23         return self.user.name
24 
25 
26 class UserLeavingMessage(models.Model):
27     """
28     用户留言
29     """
30     MESSAGE_CHOICE=(
31         (1,'留言'),
32         (2,'投诉'),
33         (3,'询问'),
34         (4,'售后'),
35         (5,'求购'),
36     )
37     user = models.ForeignKey(User, verbose_name='用户', on_delete=models.CASCADE)
38     message_type=models.IntegerField(choices=MESSAGE_CHOICE,verbose_name='留言类型',
39                                      help_text='留言类型:1(留言),2(投诉),3(询问),4(售后),5(求购)')
40     subject=models.CharField(max_length=100,default='',verbose_name='主题')
41     message=models.TextField(default='',verbose_name='留言内容',help_text='留言内容')
42     file=models.FileField(verbose_name='上传的文件',help_text='上传的文件')
43     add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
44 
45     class Meta:
46         verbose_name = '用户留言'
47         verbose_name_plural = verbose_name
48 
49     def __str__(self):
50         return self.subject
51 
52 
53 class UserAddress(models.Model):
54     """
55     用户收货地址
56     """
57     user = models.ForeignKey(User, verbose_name='用户', on_delete=models.CASCADE)
58     district=models.CharField(max_length=100,default='',verbose_name='区域')
59     address=models.CharField(max_length=100,default='',verbose_name='详细地址')
60     signer_name=models.CharField(max_length=100,default='',verbose_name='签收人')
61     signer_mobile=models.CharField(max_length=11,default='',verbose_name='电话')
62     add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
63 
64     class Meta:
65         verbose_name = '收货地址'
66         verbose_name_plural = verbose_name
67 
68     def __str__(self):
69         return self.address

5.创建数据

打开Terminal终端,执行命令:

python manage.py makemigrations
python manage.yp migrate

除了会报错,发现一些model中定义的错误,在这里还有一个坑,可能会报错:

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied befo
re its dependency users.0001_initial on database 'default'.

解决方法,删除mxshop数据库中所有的表,保留mxshop数据库,简单明了的办法就是:删除mxshop数据库,再新建一个mxshop数据库:

开始--->所有程序--->MySQL / MySQL Server 5.7 / MySQL 5.7 Command Line Client - Unicode

drop database mxshop;
create database mxshop; 

再在Terminal终端目录下执行命令:

python manage.py makemigrations
python manage.yp migrate

数据库中的数据表雏形,就建立完成啦! 

 三、xadmin后台管理系统的配置  

1.xadmin所需要的依赖包

django 2.0 #已经安装了
django-crispy-forms
django-reversion
future
httplib2
six

2.用于导出Excel所需要的包  

xlwt
xlsxwriter
xlrd

3.导入xadmin  

1.下载适用于django2.0版本的xadmin压缩包,下载地址:https://github.com/sshwsfc/xadmin/tree/django2

2.点击克隆或下载按钮,将压缩包下载到电脑上,然后解压,得到xadmin-django2文件夹,文件夹里也有个名为xadmin-django2的文件夹,在这个xadmin-django2文件夹里面有个xadmin文件夹

3.将xadmin文件夹复制粘贴到项目目录下的extra_apps目录下

4.在settings.py 中添加xadmin相关注册项:

 1 INSTALLED_APPS = [
 2     'django.contrib.admin',
 3     'django.contrib.auth',
 4     'django.contrib.contenttypes',
 5     'django.contrib.sessions',
 6     'django.contrib.messages',
 7     'django.contrib.staticfiles',
 8     'users',
 9     'goods',
10     'trade',
11     'user_operation',
12  13     'xadmin',
14     'crispy_forms',
15     'reversion',
16 ]

5.重新mark一下extra_apps目录:右键==》Mark Directory as==》Sources Root

4.富文本编辑器ueditor

在apps/goods/models.py中的商品的详情,需要用到富文本编辑框的字段。

1.下载引入支持python3的DjangoUeditor包,下载地址:https://github.com/twz915/DjangoUeditor3

2.解压后,将DjangoUeditor复制粘贴(复制粘贴就说复制粘贴,非要说pip install ,说人话不好么?)到extra_apps目录下,然后在settings.py中注册:

 1 # Application definition
 2 
 3 INSTALLED_APPS = [
 4     'django.contrib.admin',
 5     'django.contrib.auth',
 6     'django.contrib.contenttypes',
 7     'django.contrib.sessions',
 8     'django.contrib.messages',
 9     'django.contrib.staticfiles',
10     'users',
11     'goods',
12     'trade',
13     'user_operation',
14     'DjangoUeditor',
15     'crispy_forms',
16     'reversion',
17     'xadmin',   
18 ]

3.在urls.py中:

 1 from django.contrib import admin
 2 from django.urls import path,include
 3 
 4 
 5 
 6 
 7 
 8 urlpatterns = [
 9     path('admin/', admin.site.urls),
10 
11 #配置url
12     path('ueditor/',include('DjangoUeditor.urls' )),
13 ]

4.xadmin中添加插件ueditor

在extra_apps / xadmin ,在xadmin下的plugin中新建一个ueditor.py文件,写入代码:

 1 import xadmin
 2 from xadmin.views import BaseAdminPlugin, CreateAdminView, ModelFormAdminView, UpdateAdminView
 3 from DjangoUeditor.models import UEditorField
 4 from DjangoUeditor.widgets import UEditorWidget
 5 from django.conf import settings
 6 
 7 
 8 class XadminUEditorWidget(UEditorWidget):
 9     def __init__(self,**kwargs):
10         self.ueditor_options=kwargs
11         self.Media.js = None
12         super(XadminUEditorWidget,self).__init__(kwargs)
13 
14 
15 class UeditorPlugin(BaseAdminPlugin):
16 
17     def get_field_style(self, attrs, db_field, style, **kwargs):
18         if style == 'ueditor':
19             if isinstance(db_field, UEditorField):
20                 widget = db_field.formfield().widget
21                 param = {}
22                 param.update(widget.ueditor_settings)
23                 param.update(widget.attrs)
24                 return {'widget': XadminUEditorWidget(**param)}
25         return attrs
26 
27     def block_extrahead(self, context, nodes):
28         js = '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.config.js")         #自己的静态目录
29         js += '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.all.min.js")   #自己的静态目录
30         nodes.append(js)
31 
32 xadmin.site.register_plugin(UeditorPlugin, UpdateAdminView)
33 xadmin.site.register_plugin(UeditorPlugin, CreateAdminView)

5.将ueditor添加到plugin下的_init_.py中:

1 PLUGINS = (
2     ...
3     'ueditor',
4 )

(下面的步骤,在后面运用时操作)

6.将ueditor添加到adminx.py中:

1 class GoodsAdmin(object):
2    ...
3     style_fields = {"goods_desc": "ueditor"}

7.在前端显示的话,需要对html页面修改如下

1 {% autoescape off %}
2 {{ good.goods_desc }}
3 {% endautoescape %}

5.xadmin注册models

在apps/users下新建adminx.py

 1 import xadmin
 2 from xadmin import views
 3 from .models import VerifyCode
 4 
 5 
 6 class BaseSetting(object):
 7     """
 8     引入更换主题功能
 9     """
10     enable_themes = True
11     use_bootswatch = True
12 
13 
14 class GlobalSettings(object):
15     """
16     页头和页脚
17     """
18     site_title = "慕学生鲜后台"
19     site_footer = "mxshop"
20     # menu_style = "accordion"如果加上,后台的菜单会变成下拉式
21 
22 
23 class VerifyCodeAdmin(object):
24     list_display = ['code', 'mobile', "add_time"]
25 
26 
27 xadmin.site.register(VerifyCode, VerifyCodeAdmin)
28 xadmin.site.register(views.BaseAdminView, BaseSetting)
29 xadmin.site.register(views.CommAdminView, GlobalSettings)

 在apps/goods下新建adminx.py

 1 import xadmin
 2 from .models import Goods, GoodsCategory, GoodsImage, GoodsCategoryBrand, Banner
 3 
 4 
 5 class GoodsAdmin(object):
 6     list_display = ["name", "click_num", "sold_num", "fav_num", "goods_num", "market_price",
 7                     "shop_price", "goods_brief", "goods_desc", "is_new", "is_hot", "add_time"]
 8     search_fields = ['name', ]
 9     list_editable = ["is_hot", ]
10     list_filter = ["name", "click_num", "sold_num", "fav_num", "goods_num", "market_price",
11                    "shop_price", "is_new", "is_hot", "add_time", "category__name"]
12     style_fields = {"goods_desc": "ueditor"}
13 
14     class GoodsImagesInline(object):
15         model = GoodsImage
16         exclude = ["add_time"]
17         extra = 1
18         style = 'tab'
19 
20     inlines = [GoodsImagesInline]
21 
22 
23 class GoodsCategoryAdmin(object):
24     list_display = ["name", "category_type", "parent_category", "add_time"]
25     list_filter = ["category_type", "parent_category", "name"]
26     search_fields = ['name', ]
27 
28 
29 class GoodsBrandAdmin(object):
30     list_display = ["category", "image", "name", "desc"]
31 
32 
33 
34 
35 class BannerGoodsAdmin(object):
36     list_display = ["goods", "image", "index"]
37 
38 
39 
40 xadmin.site.register(Goods, GoodsAdmin)
41 xadmin.site.register(GoodsCategory, GoodsCategoryAdmin)
42 xadmin.site.register(Banner, BannerGoodsAdmin)
43 xadmin.site.register(GoodsCategoryBrand, GoodsBrandAdmin)

在apps/trade下新建adminx.py

 1 import xadmin
 2 from .models import ShoppingCar, OrderInfo, OrderGoods
 3 
 4 
 5 class ShoppingCarAdmin(object):
 6     list_display = ["user", "goods", "nums", ]
 7 
 8 
 9 class OrderInfoAdmin(object):
10     list_display = ["user", "order_sn",  "trade_no", "pay_status", "post_script", "order_mount",
11                     "order_mount", "pay_time", "add_time"]
12 
13     class OrderGoodsInline(object):
14         model = OrderGoods
15         exclude = ['add_time', ]
16         extra = 1
17         style = 'tab'
18 
19     inlines = [OrderGoodsInline, ]
20 
21 
22 xadmin.site.register(ShoppingCar, ShoppingCarAdmin)
23 xadmin.site.register(OrderInfo, OrderInfoAdmin)

在apps/user_operation下新建adminx.py

 1 import xadmin
 2 from .models import UserFav, UserLeavingMessage, UserAddress
 3 
 4 
 5 class UserFavAdmin(object):
 6     list_display = ['user', 'goods', "add_time"]
 7 
 8 
 9 class UserLeavingMessageAdmin(object):
10     list_display = ['user', 'message_type', "message", "add_time"]
11 
12 
13 class UserAddressAdmin(object):
14     list_display = ["signer_name", "signer_mobile", "district", "address"]
15 
16 xadmin.site.register(UserFav, UserFavAdmin)
17 xadmin.site.register(UserAddress, UserAddressAdmin)
18 xadmin.site.register(UserLeavingMessage, UserLeavingMessageAdmin)

6.登录xadmin

修改配置urls:

1 from django.urls import path,include
2 
3 import xadmin
4 
5 
6 urlpatterns = [
7     path('xadmin/', xadmin.site.urls),
8     path('ueditor/',include('DjangoUeditor.urls' )),
9 ]

创建superuser:

打开Terminal终端,执行命令:

1 python manage.py ceratesuperuser
2 Username:root   #自定义一个用户名 
3 Email:root@qq.com     #自定义一个邮箱
4 PassWord:root1234    #自定义设置一个至少八位的密码,输入的时候终端是不显示的
5 PassWord(again):root1234
6     

创建成功后,启动项目 点击 4run 即可。

然后访问127.0.0.1:8000/xadmin/

登录到后台,发现许多地方都是英文的,在settings.py 中将跟设置时区相关的代码修改为:

1 LANGUAGE_CODE = 'zh-hans'
2 
3 TIME_ZONE = 'Asia/Shanghai'
4 
5 USE_I18N = True
6 
7 USE_L10N = True
8 
9 USE_TZ = False

然后再访问127.0.0.1:8000/xadmin/

发现虽然网页整体风格用了中文,但app名还是英文的,需要将其换位中文,将settings.py对几个app的注册,从注册app名,改成注册app的配置:

 1 INSTALLED_APPS = [
 2     'django.contrib.admin',
 3     'django.contrib.auth',
 4     'django.contrib.contenttypes',
 5     'django.contrib.sessions',
 6     'django.contrib.messages',
 7     'django.contrib.staticfiles',
 8     
 9     'users.apps.UsersConfig',
10     'goods.apps.GoodsConfig',
11     'trade.apps.TradeConfig',
12     'user_operation.apps.UserOperationConfig', #注意这条的写法
13     
14     'DjangoUeditor',
15     'crispy_forms',
16     'reversion',
17     'xadmin',
18 ]

然后再在apps/users/apps.py中增加verbos_name

1 from django.apps import AppConfig
2 
3 
4 class UsersConfig(AppConfig):
5     name = 'users'
6     verbose_name = '用户管理'

然后再在apps/goods/apps.py中增加verbos_name

 1 import xadmin
 2 from .models import Goods, GoodsCategory, GoodsImage, GoodsCategoryBrand, Banner
 3 
 4 
 5 class GoodsAdmin(object):
 6     list_display = ["name",
 7                     "click_num",
 8                     "sold_num",
 9                     "goods_num",
10                     "market_price",
11                     "shop_price",
12                     "goods_brief",
13                     "goods_desc",
14                     "is_new",
15                     "is_hot",
16                     "add_time"]
17     search_fields = ['name', ]
18     list_editable = ["is_hot", ]
19     list_filter = ["name",
20                    "click_num",
21                    "sold_num",
22                    "goods_num",
23                    "market_price",
24                    "shop_price",
25                    "is_new",
26                    "is_hot",
27                    "add_time",
28                    "category__name"]
29     style_fields = {"goods_desc": "ueditor"}
30 
31     class GoodsImagesInline(object):
32         model = GoodsImage
33         exclude = ["add_time"]
34         extra = 1
35         style = 'tab'
36 
37     inlines = [GoodsImagesInline]
38 
39 
40 class GoodsCategoryAdmin(object):
41     list_display = ["name", "category_type", "parent_category", "add_time"]
42     list_filter = ["category_type", "parent_category", "name"]
43     search_fields = ['name', ]
44 
45 
46 class GoodsBrandAdmin(object):
47     list_display = ["category", "image", "name", "desc"]
48 
49 
50 
51 
52 class BannerGoodsAdmin(object):
53     list_display = ["goods", "image", "index"]
54 
55 
56 
57 xadmin.site.register(Goods, GoodsAdmin)
58 xadmin.site.register(GoodsCategory, GoodsCategoryAdmin)
59 xadmin.site.register(Banner, BannerGoodsAdmin)
60 xadmin.site.register(GoodsCategoryBrand, GoodsBrandAdmin)

然后再在apps/trade/apps.py中增加verbos_name

 1 import xadmin
 2 from .models import ShoppingCar, OrderInfo, OrderGoods
 3 
 4 
 5 class ShoppingCarAdmin(object):
 6     list_display = ["user", "goods", "goods_num", ]
 7 
 8 
 9 class OrderInfoAdmin(object):
10     list_display = ["user",
11                     "order_sn",
12                     "trade_no",
13                     "pay_status",
14                     "post_script",
15                     "order_mount",
16                     "pay_time",
17                     "add_time"]
18 
19     class OrderGoodsInline(object):
20         model = OrderGoods
21         exclude = ['add_time', ]
22         extra = 1
23         style = 'tab'
24 
25     inlines = [OrderGoodsInline, ]

然后再在apps/user_operation/apps.py中增加verbos_name

1 from django.apps import AppConfig
2 
3 
4 class UserOperationConfig(AppConfig):
5     name = 'user_operation'
6     verbose_name = '用户操作管理'

然后再访问127.0.0.1:8000/xadmin/  发现都变成中文的了。

四.测试数据(商品和商品类别)的导入

1.goods/images,将goods文件夹从素材库中,导入到项目madia目录下,然后将apps / goods / models.py 中 Goods表中 goods_front_image 字段(封面图)改写成:

1 goods_front_image=models.ImageField(upload_to='goods/images/',null=True,blank=True,verbose_name='封面图')

2.将brands文件夹从素材库中,导入到项目madia目录下,然后将apps / goods / models.py 中GoodsCategoryBrand表中image 字段改写成

1 image=models.ImageField(max_length=200,upload_to='brands/')

3.独立使用django的model

在db_tools目录下新建data目录,将素材项目中的category_data.py(目录数据)和product_data.py(商品数据)导入。

  1 #!/usr/bin/env python
  2 # encoding: utf-8
  3 
  4 row_data = [
  5     {
  6         'sub_categorys': [
  7             {
  8                 'sub_categorys': [
  9                     {
 10                         'code': 'yr',
 11                         'name': '羊肉'
 12                     },
 13                     {
 14                         'code': 'ql',
 15                         'name': '禽类'
 16                     },
 17                     {
 18                         'code': 'zr',
 19                         'name': '猪肉'
 20                     },
 21                     {
 22                         'code': 'nr',
 23                         'name': '牛肉'
 24                     }
 25                 ],
 26                 'code': 'jprl',
 27                 'name': '精品肉类'
 28             },
 29             {
 30                 'sub_categorys': [
 31                     {
 32                         'code': 'cb',
 33                         'name': '参鲍'
 34                     },
 35                     {
 36                         'code': 'yu',
 37                         'name': '鱼'
 38                     },
 39                     {
 40                         'code': 'xia',
 41                         'name': '虾'
 42                     },
 43                     {
 44                         'code': 'xb',
 45                         'name': '蟹/贝'
 46                     }
 47                 ],
 48                 'code': 'hxsc',
 49                 'name': '海鲜水产'
 50             },
 51             {
 52                 'sub_categorys': [
 53                     {
 54                         'code': 'xhd_xyd',
 55                         'name': '松花蛋/咸鸭蛋'
 56                     },
 57                     {
 58                         'code': 'jd',
 59                         'name': '鸡蛋'
 60                     }
 61                 ],
 62                 'code': 'dzp',
 63                 'name': '蛋制品'
 64             },
 65             {
 66                 'sub_categorys': [
 67                     {
 68                         'code': 'sc',
 69                         'name': '生菜'
 70                     },
 71                     {
 72                         'code': 'bc',
 73                         'name': '菠菜'
 74                     },
 75                     {
 76                         'code': 'yj',
 77                         'name': '圆椒'
 78                     },
 79                     {
 80                         'code': 'xlh',
 81                         'name': '西兰花'
 82                     }
 83                 ],
 84                 'code': 'ycl',
 85                 'name': '叶菜类'
 86             },
 87             {
 88                 'sub_categorys': [
 89 
 90                 ],
 91                 'code': 'gjl',
 92                 'name': '根茎类'
 93             },
 94             {
 95                 'sub_categorys': [
 96 
 97                 ],
 98                 'code': 'qgl',
 99                 'name': '茄果类'
100             },
101             {
102                 'sub_categorys': [
103 
104                 ],
105                 'code': 'jgl',
106                 'name': '菌菇类'
107             },
108             {
109                 'sub_categorys': [
110 
111                 ],
112                 'code': 'jksx',
113                 'name': '进口生鲜'
114             }
115         ],
116         'code': 'sxsp',
117         'name': '生鲜食品'
118     },
119     {
120         'sub_categorys': [
121             {
122                 'sub_categorys': [
123                     {
124                         'code': 'wly',
125                         'name': '五粮液'
126                     },
127                     {
128                         'code': 'lzlj',
129                         'name': '泸州老窖'
130                     },
131                     {
132                         'code': 'mt',
133                         'name': '茅台'
134                     }
135                 ],
136                 'code': 'bk',
137                 'name': '白酒'
138             },
139             {
140                 'sub_categorys': [
141 
142                 ],
143                 'code': 'ptj',
144                 'name': '葡萄酒'
145             },
146             {
147                 'sub_categorys': [
148 
149                 ],
150                 'code': 'yj',
151                 'name': '洋酒'
152             },
153             {
154                 'sub_categorys': [
155 
156                 ],
157                 'code': 'pj',
158                 'name': '啤酒'
159             },
160             {
161                 'sub_categorys': [
162                     {
163                         'code': 'qtpp',
164                         'name': '其他品牌'
165                     },
166                     {
167                         'code': 'hj',
168                         'name': '黄酒'
169                     },
170                     {
171                         'code': 'ysj',
172                         'name': '养生酒'
173                     }
174                 ],
175                 'code': 'qtjp',
176                 'name': '其他酒品'
177             },
178             {
179                 'sub_categorys': [
180 
181                 ],
182                 'code': 'yls',
183                 'name': '饮料/水'
184             },
185             {
186                 'sub_categorys': [
187                     {
188                         'code': 'bld',
189                         'name': '白兰地'
190                     },
191                     {
192                         'code': 'wsj',
193                         'name': '威士忌'
194                     }
195                 ],
196                 'code': 'hj',
197                 'name': '红酒'
198             }
199         ],
200         'code': 'jsyl',
201         'name': '酒水饮料'
202     },
203     {
204         'sub_categorys': [
205             {
206                 'sub_categorys': [
207                     {
208                         'code': '其他食用油',
209                         'name': '其他食用油'
210                     },
211                     {
212                         'code': '菜仔油',
213                         'name': '菜仔油'
214                     },
215                     {
216                         'code': '花生油',
217                         'name': '花生油'
218                     },
219                     {
220                         'code': '橄榄油',
221                         'name': '橄榄油'
222                     },
223                     {
224                         'code': '礼盒',
225                         'name': '礼盒'
226                     }
227                 ],
228                 'code': '食用油',
229                 'name': '食用油'
230             },
231             {
232                 'sub_categorys': [
233                     {
234                         'code': '面粉/面条',
235                         'name': '面粉/面条'
236                     },
237                     {
238                         'code': '大米',
239                         'name': '大米'
240                     },
241                     {
242                         'code': '意大利面',
243                         'name': '意大利面'
244                     }
245                 ],
246                 'code': '米面杂粮',
247                 'name': '米面杂粮'
248             },
249             {
250                 'sub_categorys': [
251                     {
252                         'code': '调味油/汁',
253                         'name': '调味油/汁'
254                     },
255                     {
256                         'code': '酱油/醋',
257                         'name': '酱油/醋'
258                     }
259                 ],
260                 'code': '厨房调料',
261                 'name': '厨房调料'
262             },
263             {
264                 'sub_categorys': [
265 
266                 ],
267                 'code': '南北干货',
268                 'name': '南北干货'
269             },
270             {
271                 'sub_categorys': [
272 
273                 ],
274                 'code': '方便速食',
275                 'name': '方便速食'
276             },
277             {
278                 'sub_categorys': [
279 
280                 ],
281                 'code': '调味品',
282                 'name': '调味品'
283             }
284         ],
285         'code': '粮油副食',
286         'name': '粮油副食'
287     },
288     {
289         'sub_categorys': [
290             {
291                 'sub_categorys': [
292                     {
293                         'code': '西红柿',
294                         'name': '西红柿'
295                     },
296                     {
297                         'code': '韭菜',
298                         'name': '韭菜'
299                     },
300                     {
301                         'code': '青菜',
302                         'name': '青菜'
303                     }
304                 ],
305                 'code': '有机蔬菜',
306                 'name': '有机蔬菜'
307             },
308             {
309                 'sub_categorys': [
310                     {
311                         'code': '甘蓝',
312                         'name': '甘蓝'
313                     },
314                     {
315                         'code': '胡萝卜',
316                         'name': '胡萝卜'
317                     },
318                     {
319                         'code': '黄瓜',
320                         'name': '黄瓜'
321                     }
322                 ],
323                 'code': '精选蔬菜',
324                 'name': '精选蔬菜'
325             },
326             {
327                 'sub_categorys': [
328                     {
329                         'code': '火龙果',
330                         'name': '火龙果'
331                     },
332                     {
333                         'code': '菠萝蜜',
334                         'name': '菠萝蜜'
335                     },
336                     {
337                         'code': '奇异果',
338                         'name': '奇异果'
339                     }
340                 ],
341                 'code': '进口水果',
342                 'name': '进口水果'
343             },
344             {
345                 'sub_categorys': [
346                     {
347                         'code': '水果礼盒',
348                         'name': '水果礼盒'
349                     },
350                     {
351                         'code': '苹果',
352                         'name': '苹果'
353                     },
354                     {
355                         'code': '雪梨',
356                         'name': '雪梨'
357                     }
358                 ],
359                 'code': '国产水果',
360                 'name': '国产水果'
361             }
362         ],
363         'code': '蔬菜水果',
364         'name': '蔬菜水果'
365     },
366     {
367         'sub_categorys': [
368             {
369                 'sub_categorys': [
370                     {
371                         'code': '果冻',
372                         'name': '果冻'
373                     },
374                     {
375                         'code': '枣类',
376                         'name': '枣类'
377                     },
378                     {
379                         'code': '蜜饯',
380                         'name': '蜜饯'
381                     },
382                     {
383                         'code': '肉类零食',
384                         'name': '肉类零食'
385                     },
386                     {
387                         'code': '坚果炒货',
388                         'name': '坚果炒货'
389                     }
390                 ],
391                 'code': '休闲零食',
392                 'name': '休闲零食'
393             },
394             {
395                 'sub_categorys': [
396                     {
397                         'code': '创意喜糖',
398                         'name': '创意喜糖'
399                     },
400                     {
401                         'code': '口香糖',
402                         'name': '口香糖'
403                     },
404                     {
405                         'code': '软糖',
406                         'name': '软糖'
407                     },
408                     {
409                         'code': '棒棒糖',
410                         'name': '棒棒糖'
411                     }
412                 ],
413                 'code': '糖果',
414                 'name': '糖果'
415             },
416             {
417                 'sub_categorys': [
418                     {
419                         'code': '夹心巧克力',
420                         'name': '夹心巧克力'
421                     },
422                     {
423                         'code': '白巧克力',
424                         'name': '白巧克力'
425                     },
426                     {
427                         'code': '松露巧克力',
428                         'name': '松露巧克力'
429                     },
430                     {
431                         'code': '黑巧克力',
432                         'name': '黑巧克力'
433                     }
434                 ],
435                 'code': '巧克力',
436                 'name': '巧克力'
437             },
438             {
439                 'sub_categorys': [
440                     {
441                         'code': '牛肉干',
442                         'name': '牛肉干'
443                     },
444                     {
445                         'code': '猪肉脯',
446                         'name': '猪肉脯'
447                     },
448                     {
449                         'code': '牛肉粒',
450                         'name': '牛肉粒'
451                     },
452                     {
453                         'code': '猪肉干',
454                         'name': '猪肉干'
455                     }
456                 ],
457                 'code': '肉干肉脯/豆干',
458                 'name': '肉干肉脯/豆干'
459             },
460             {
461                 'sub_categorys': [
462                     {
463                         'code': '鱿鱼足',
464                         'name': '鱿鱼足'
465                     },
466                     {
467                         'code': '鱿鱼丝',
468                         'name': '鱿鱼丝'
469                     },
470                     {
471                         'code': '墨鱼/乌贼',
472                         'name': '墨鱼/乌贼'
473                     },
474                     {
475                         'code': '鱿鱼仔',
476                         'name': '鱿鱼仔'
477                     },
478                     {
479                         'code': '鱿鱼片',
480                         'name': '鱿鱼片'
481                     }
482                 ],
483                 'code': '鱿鱼丝/鱼干',
484                 'name': '鱿鱼丝/鱼干'
485             }
486         ],
487         'code': '休闲食品',
488         'name': '休闲食品'
489     },
490     {
491         'sub_categorys': [
492             {
493                 'sub_categorys': [
494 
495                 ],
496                 'code': '进口奶品',
497                 'name': '进口奶品'
498             },
499             {
500                 'sub_categorys': [
501 
502                 ],
503                 'code': '国产奶品',
504                 'name': '国产奶品'
505             },
506             {
507                 'sub_categorys': [
508 
509                 ],
510                 'code': '奶粉',
511                 'name': '奶粉'
512             },
513             {
514                 'sub_categorys': [
515 
516                 ],
517                 'code': '有机奶',
518                 'name': '有机奶'
519             },
520             {
521                 'sub_categorys': [
522 
523                 ],
524                 'code': '原料奶',
525                 'name': '原料奶'
526             }
527         ],
528         'code': '奶类食品',
529         'name': '奶类食品'
530     },
531     {
532         'sub_categorys': [
533             {
534                 'sub_categorys': [
535 
536                 ],
537                 'code': '菌菇类',
538                 'name': '菌菇类'
539             },
540             {
541                 'sub_categorys': [
542 
543                 ],
544                 'code': '腌干海产',
545                 'name': '腌干海产'
546             },
547             {
548                 'sub_categorys': [
549 
550                 ],
551                 'code': '汤料',
552                 'name': '汤料'
553             },
554             {
555                 'sub_categorys': [
556 
557                 ],
558                 'code': '豆类',
559                 'name': '豆类'
560             },
561             {
562                 'sub_categorys': [
563 
564                 ],
565                 'code': '干菜/菜干',
566                 'name': '干菜/菜干'
567             },
568             {
569                 'sub_categorys': [
570 
571                 ],
572                 'code': '干果/果干',
573                 'name': '干果/果干'
574             },
575             {
576                 'sub_categorys': [
577 
578                 ],
579                 'code': '豆制品',
580                 'name': '豆制品'
581             },
582             {
583                 'sub_categorys': [
584 
585                 ],
586                 'code': '腊味',
587                 'name': '腊味'
588             }
589         ],
590         'code': '天然干货',
591         'name': '天然干货'
592     },
593     {
594         'sub_categorys': [
595             {
596                 'sub_categorys': [
597 
598                 ],
599                 'code': '白茶',
600                 'name': '白茶'
601             },
602             {
603                 'sub_categorys': [
604 
605                 ],
606                 'code': '红茶',
607                 'name': '红茶'
608             },
609             {
610                 'sub_categorys': [
611 
612                 ],
613                 'code': '绿茶',
614                 'name': '绿茶'
615             }
616         ],
617         'code': '精选茗茶',
618         'name': '精选茗茶'
619     }
620 ]

  1 #!/usr/bin/env python
  2 # encoding: utf-8
  3 
  4 row_data = [
  5     {
  6         'images': [
  7             'goods/images/1_P_1449024889889.jpg',
  8             'goods/images/1_P_1449024889264.jpg',
  9             'goods/images/1_P_1449024889726.jpg',
 10             'goods/images/1_P_1449024889018.jpg',
 11             'goods/images/1_P_1449024889287.jpg'
 12         ],
 13         'categorys': [
 14             '首页',
 15             '生鲜食品',
 16             '根茎类'
 17         ],
 18         'market_price': '¥232元',
 19         'name': '新鲜水果甜蜜香脆单果约800克',
 20         'desc': '食用百香果可以增加胃部饱腹感,减少余热量的摄入,还可以吸附胆固醇和胆汁之类有机分子,抑制人体对脂肪的吸收。因此,长期食用有利于改善人体营养吸收结构,降低体内脂肪,塑造健康优美体态。',
 21         'sale_price': '¥156元',
 22         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
 23     },
 24     {
 25         'images': [
 26             'goods/images/2_P_1448945810202.jpg',
 27             'goods/images/2_P_1448945810814.jpg'
 28         ],
 29         'categorys': [
 30             '首页',
 31             '生鲜食品',
 32             '海鲜水产'
 33         ],
 34         'market_price': '¥106元',
 35         'name': '田然牛肉大黄瓜条生鲜牛肉冷冻真空黄牛',
 36         'desc': '前腿+后腿+羊排共8斤,原生态大山放牧羊羔,曾经的皇室贡品,央视推荐,2005年北京招待全球财金首脑。五层专用包装箱+真空包装+冰袋+保鲜箱+顺丰冷链发货,路途保质期8天',
 37         'sale_price': '¥88元',
 38         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
 39     },
 40     {
 41         'images': [
 42             'goods/images/7_P_1448945104883.jpg',
 43             'goods/images/7_P_1448945104734.jpg'
 44         ],
 45         'categorys': [
 46             '首页',
 47             '生鲜食品',
 48             '叶菜类'
 49         ],
 50         'market_price': '¥286元',
 51         'name': '酣畅家庭菲力牛排10片澳洲生鲜牛肉团购套餐',
 52         'desc': None,
 53         'sale_price': '¥238元',
 54         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
 55     },
 56     {
 57         'images': [
 58             'goods/images/47_P_1448946213263.jpg',
 59             'goods/images/47_P_1448946213157.jpg'
 60         ],
 61         'categorys': [
 62             '首页',
 63             '生鲜食品',
 64             '根茎类'
 65         ],
 66         'market_price': '¥156元',
 67         'name': '日本蒜蓉粉丝扇贝270克6只装',
 68         'desc': None,
 69         'sale_price': '¥108元',
 70         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
 71     },
 72     {
 73         'images': [
 74             'goods/images/10_P_1448944572085.jpg',
 75             'goods/images/10_P_1448944572532.jpg',
 76             'goods/images/10_P_1448944572872.jpg'
 77         ],
 78         'categorys': [
 79             '首页',
 80             '生鲜食品',
 81             '海鲜水产'
 82         ],
 83         'market_price': '¥106元',
 84         'name': '内蒙新鲜牛肉1斤清真生鲜牛肉火锅食材',
 85         'desc': None,
 86         'sale_price': '¥88元',
 87         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
 88     },
 89     {
 90         'images': [
 91             'goods/images/4_P_1448945381985.jpg',
 92             'goods/images/4_P_1448945381013.jpg'
 93         ],
 94         'categorys': [
 95             '首页',
 96             '生鲜食品',
 97             '茄果类'
 98         ],
 99         'market_price': '¥90元',
100         'name': '乌拉圭进口牛肉卷特级肥牛卷',
101         'desc': None,
102         'sale_price': '¥75元',
103         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
104     },
105     {
106         'images': [
107             'goods/images/8_P_1448945032810.jpg',
108             'goods/images/8_P_1448945032646.jpg'
109         ],
110         'categorys': [
111             '首页',
112             '生鲜食品',
113             '进口生鲜'
114         ],
115         'market_price': '¥150元',
116         'name': '五星眼肉牛排套餐8片装原味原切生鲜牛肉',
117         'desc': None,
118         'sale_price': '¥125元',
119         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
120     },
121     {
122         'images': [
123             'goods/images/11_P_1448944388277.jpg',
124             'goods/images/11_P_1448944388034.jpg',
125             'goods/images/11_P_1448944388201.jpg'
126         ],
127         'categorys': [
128             '首页',
129             '生鲜食品',
130             '海鲜水产'
131         ],
132         'market_price': '¥31元',
133         'name': '澳洲进口120天谷饲牛仔骨4份原味生鲜',
134         'desc': None,
135         'sale_price': '¥26元',
136         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
137     },
138     {
139         'images': [
140             'goods/images/6_P_1448945167279.jpg',
141             'goods/images/6_P_1448945167015.jpg'
142         ],
143         'categorys': [
144             '首页',
145             '生鲜食品',
146             '菌菇类'
147         ],
148         'market_price': '¥239元',
149         'name': '潮香村澳洲进口牛排家庭团购套餐20片',
150         'desc': None,
151         'sale_price': '¥199元',
152         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
153     },
154     {
155         'images': [
156             'goods/images/9_P_1448944791617.jpg',
157             'goods/images/9_P_1448944791129.jpg',
158             'goods/images/9_P_1448944791077.jpg',
159             'goods/images/9_P_1448944791229.jpg'
160         ],
161         'categorys': [
162             '首页',
163             '生鲜食品',
164             '根茎类'
165         ],
166         'market_price': '¥202元',
167         'name': '爱食派内蒙古呼伦贝尔冷冻生鲜牛腱子肉1000g',
168         'desc': None,
169         'sale_price': '¥168元',
170         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
171     },
172     {
173         'images': [
174             'goods/images/3_P_1448945490837.jpg',
175             'goods/images/3_P_1448945490084.jpg'
176         ],
177         'categorys': [
178             '首页',
179             '生鲜食品',
180             '精品肉类'
181         ],
182         'market_price': '¥306元',
183         'name': '澳洲进口牛尾巴300g新鲜肥牛肉',
184         'desc': '新鲜羊羔肉整只共15斤,原生态大山放牧羊羔,曾经的皇室贡品,央视推荐,2005年北京招待全球财金首脑。五层专用包装箱+真空包装+冰袋+保鲜箱+顺丰冷链发货,路途保质期8天',
185         'sale_price': '¥255元',
186         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
187     },
188     {
189         'images': [
190             'goods/images/48_P_1448943988970.jpg',
191             'goods/images/48_P_1448943988898.jpg',
192             'goods/images/48_P_1448943988439.jpg'
193         ],
194         'categorys': [
195             '首页',
196             '生鲜食品',
197             '海鲜水产'
198         ],
199         'market_price': '¥126元',
200         'name': '新疆巴尔鲁克生鲜牛排眼肉牛扒1200g',
201         'desc': None,
202         'sale_price': '¥88元',
203         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
204     },
205     {
206         'images': [
207             'goods/images/5_P_1448945270390.jpg',
208             'goods/images/5_P_1448945270067.jpg',
209             'goods/images/5_P_1448945270432.jpg'
210         ],
211         'categorys': [
212             '首页',
213             '生鲜食品',
214             '蛋制品'
215         ],
216         'market_price': '¥144元',
217         'name': '澳洲进口安格斯牛切片上脑牛排1000g',
218         'desc': '澳大利亚是国际公认的没有疯牛病和口蹄疫的国家。为了保持澳大利亚产品的高标准,澳大利亚牛肉业和各级政府共同努力简历了严格的标准和体系,以保证生产的整体化和产品的可追溯性',
219         'sale_price': '¥120元',
220         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
221     },
222     {
223         'images': [
224             'images/201705/goods_img/53_P_1495068879687.jpg'
225         ],
226         'categorys': [
227             '首页',
228             '生鲜食品',
229             '茄果类'
230         ],
231         'market_price': '¥120元',
232         'name': '帐篷出租',
233         'desc': None,
234         'sale_price': '¥100元',
235         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
236     },
237     {
238         'images': [
239             'goods/images/16_P_1448947194687.jpg'
240         ],
241         'categorys': [
242             '首页',
243             '酒水饮料',
244             '红酒'
245         ],
246         'market_price': '¥23元',
247         'name': '52度茅台集团国隆双喜酒500mlx6',
248         'desc': '贵州茅台酒厂(集团)保健酒业有限公司生产,是以“龙”字打头的酒水。中国龙文化上下8000年,源远而流长,龙的形象是一种符号、一种意绪、一种血肉相联的情感。',
249         'sale_price': '¥19元',
250         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
251     },
252     {
253         'images': [
254             'goods/images/14_P_1448947354031.jpg',
255             'goods/images/14_P_1448947354433.jpg'
256         ],
257         'categorys': [
258             '首页',
259             '酒水饮料',
260             '饮料/水'
261         ],
262         'market_price': '¥43元',
263         'name': '52度水井坊臻酿八號500ml',
264         'desc': None,
265         'sale_price': '¥36元',
266         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
267     },
268     {
269         'images': [
270             'goods/images/12_P_1448947547989.jpg'
271         ],
272         'categorys': [
273             '首页',
274             '酒水饮料',
275             '其他酒品'
276         ],
277         'market_price': '¥190元',
278         'name': '53度茅台仁酒500ml',
279         'desc': None,
280         'sale_price': '¥158元',
281         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
282     },
283     {
284         'images': [
285             'goods/images/46_P_1448946598711.jpg',
286             'goods/images/46_P_1448946598301.jpg'
287         ],
288         'categorys': [
289             '首页',
290             '酒水饮料',
291             '葡萄酒'
292         ],
293         'market_price': '¥38元',
294         'name': '双响炮洋酒JimBeamwhiskey美国白占边',
295         'desc': None,
296         'sale_price': '¥28元',
297         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
298     },
299     {
300         'images': [
301             'goods/images/21_P_1448946793276.jpg',
302             'goods/images/21_P_1448946793153.jpg'
303         ],
304         'categorys': [
305             '首页',
306             '酒水饮料',
307             '饮料/水'
308         ],
309         'market_price': '¥55元',
310         'name': '西夫拉姆进口洋酒小酒版',
311         'desc': None,
312         'sale_price': '¥46元',
313         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
314     },
315     {
316         'images': [
317             'goods/images/15_P_1448947257324.jpg',
318             'goods/images/15_P_1448947257580.jpg'
319         ],
320         'categorys': [
321             '首页',
322             '酒水饮料',
323             '洋酒'
324         ],
325         'market_price': '¥22元',
326         'name': '茅台53度飞天茅台500ml',
327         'desc': None,
328         'sale_price': '¥18元',
329         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
330     },
331     {
332         'images': [
333             'goods/images/13_P_1448947460386.jpg',
334             'goods/images/13_P_1448947460276.jpg',
335             'goods/images/13_P_1448947460353.jpg'
336         ],
337         'categorys': [
338             '首页',
339             '酒水饮料',
340             '葡萄酒'
341         ],
342         'market_price': '¥42元',
343         'name': '52度兰陵·紫气东来1600mL山东名酒',
344         'desc': None,
345         'sale_price': '¥35元',
346         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
347     },
348     {
349         'images': [
350             'goods/images/50_P_1448946543091.jpg',
351             'goods/images/50_P_1448946542182.jpg'
352         ],
353         'categorys': [
354             '首页',
355             '酒水饮料',
356             '饮料/水'
357         ],
358         'market_price': '¥24元',
359         'name': 'JohnnieWalker尊尼获加黑牌威士忌',
360         'desc': None,
361         'sale_price': '¥20元',
362         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
363     },
364     {
365         'images': [
366             'goods/images/51_P_1448946466595.jpg',
367             'goods/images/51_P_1448946466208.jpg'
368         ],
369         'categorys': [
370             '首页',
371             '酒水饮料',
372             '洋酒'
373         ],
374         'market_price': '¥31元',
375         'name': '人头马CLUB特优香槟干邑350ml',
376         'desc': None,
377         'sale_price': '¥26元',
378         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
379     },
380     {
381         'images': [
382             'goods/images/17_P_1448947102246.jpg'
383         ],
384         'categorys': [
385             '首页',
386             '酒水饮料',
387             '啤酒'
388         ],
389         'market_price': '¥54元',
390         'name': '张裕干红葡萄酒750ml*6支',
391         'desc': None,
392         'sale_price': '¥45元',
393         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
394     },
395     {
396         'images': [
397             'goods/images/20_P_1448946850602.jpg'
398         ],
399         'categorys': [
400             '首页',
401             '酒水饮料',
402             '葡萄酒'
403         ],
404         'market_price': '¥46元',
405         'name': '原瓶原装进口洋酒烈酒法国云鹿XO白兰地',
406         'desc': None,
407         'sale_price': '¥38元',
408         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
409     },
410     {
411         'images': [
412             'goods/images/19_P_1448946951581.jpg',
413             'goods/images/19_P_1448946951726.jpg'
414         ],
415         'categorys': [
416             '首页',
417             '酒水饮料',
418             '白酒'
419         ],
420         'market_price': '¥82元',
421         'name': '法国原装进口圣贝克干红葡萄酒750ml',
422         'desc': None,
423         'sale_price': '¥68元',
424         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
425     },
426     {
427         'images': [
428             'goods/images/18_P_1448947011435.jpg'
429         ],
430         'categorys': [
431             '首页',
432             '酒水饮料',
433             '白酒'
434         ],
435         'market_price': '¥67元',
436         'name': '法国百利威干红葡萄酒AOP级6支装',
437         'desc': None,
438         'sale_price': '¥56元',
439         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
440     },
441     {
442         'images': [
443             'goods/images/22_P_1448946729629.jpg'
444         ],
445         'categorys': [
446             '首页',
447             '酒水饮料',
448             '洋酒'
449         ],
450         'market_price': '¥71元',
451         'name': '芝华士12年苏格兰威士忌700ml',
452         'desc': None,
453         'sale_price': '¥59元',
454         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
455     },
456     {
457         'images': [
458             'goods/images/45_P_1448946661303.jpg'
459         ],
460         'categorys': [
461             '首页',
462             '酒水饮料',
463             '饮料/水'
464         ],
465         'market_price': '¥31元',
466         'name': '深蓝伏特加巴维兰利口酒送预调酒',
467         'desc': None,
468         'sale_price': '¥18元',
469         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
470     },
471     {
472         'images': [
473             'goods/images/32_P_1448948525620.jpg'
474         ],
475         'categorys': [
476             '首页',
477             '蔬菜水果',
478             '精选蔬菜'
479         ],
480         'market_price': '¥43元',
481         'name': '赣南脐橙特级果10斤装',
482         'desc': None,
483         'sale_price': '¥36元',
484         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
485     },
486     {
487         'images': [
488             'goods/images/30_P_1448948663450.jpg',
489             'goods/images/30_P_1448948662571.jpg',
490             'goods/images/30_P_1448948663221.jpg'
491         ],
492         'categorys': [
493             '首页',
494             '蔬菜水果',
495             '进口水果'
496         ],
497         'market_price': '¥11元',
498         'name': '泰国菠萝蜜16-18斤1个装',
499         'desc': '【懒人吃法】菠萝蜜果肉,冰袋保鲜,收货就吃,冰爽Q脆甜,2斤装,全国顺丰空运包邮,发出后48小时内可达,一线城市基本隔天可达',
500         'sale_price': '¥9元',
501         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
502     },
503     {
504         'images': [
505             'goods/images/31_P_1448948598947.jpg',
506             'goods/images/31_P_1448948598475.jpg'
507         ],
508         'categorys': [
509             '首页',
510             '蔬菜水果',
511             '国产水果'
512         ],
513         'market_price': '¥22元',
514         'name': '四川双流草莓新鲜水果礼盒2盒',
515         'desc': None,
516         'sale_price': '¥18元',
517         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
518     },
519     {
520         'images': [
521             'goods/images/35_P_1448948333610.jpg',
522             'goods/images/35_P_1448948333313.jpg'
523         ],
524         'categorys': [
525             '首页',
526             '蔬菜水果',
527             '有机蔬菜'
528         ],
529         'market_price': '¥67元',
530         'name': '新鲜头茬非洲冰草冰菜',
531         'desc': None,
532         'sale_price': '¥56元',
533         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
534     },
535     {
536         'images': [
537             'goods/images/36_P_1448948234405.jpg',
538             'goods/images/36_P_1448948234250.jpg'
539         ],
540         'categorys': [
541             '首页',
542             '蔬菜水果',
543             '有机蔬菜'
544         ],
545         'market_price': '¥6元',
546         'name': '仿真蔬菜水果果蔬菜模型',
547         'desc': None,
548         'sale_price': '¥5元',
549         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
550     },
551     {
552         'images': [
553             'goods/images/33_P_1448948479966.jpg',
554             'goods/images/33_P_1448948479886.jpg'
555         ],
556         'categorys': [
557             '首页',
558             '蔬菜水果',
559             '精选蔬菜'
560         ],
561         'market_price': '¥28元',
562         'name': '现摘芭乐番石榴中国台湾珍珠芭乐',
563         'desc': '''海南产精品释迦果,
564         释迦是水果中的贵族,
565         产量少,
566         味道很甜,
567         奶香十足,
568         非常可口,
569         果裹果园顺丰空运,
570         保证新鲜.果子个大,
571         一斤1-2个左右,
572         大个头的果子更尽兴!
573         ''',
574         'sale_price': '¥23元',
575         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
576     },
577     {
578         'images': [
579             'goods/images/34_P_1448948399009.jpg'
580         ],
581         'categorys': [
582             '首页',
583             '蔬菜水果',
584             '国产水果'
585         ],
586         'market_price': '¥46元',
587         'name': '潍坊萝卜5斤/箱礼盒',
588         'desc': '脐橙规格是65-90MM左右(标准果果径平均70MM左右,精品果果径平均80MM左右),一斤大概有2-4个左右,脐橙产自江西省赣州市信丰县安西镇,全过程都是采用农家有机肥种植,生态天然',
589         'sale_price': '¥38元',
590         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
591     },
592     {
593         'images': [
594             'goods/images/43_P_1448948762645.jpg'
595         ],
596         'categorys': [
597             '首页',
598             '休闲食品'
599         ],
600         'market_price': '¥154元',
601         'name': '休闲零食膨化食品焦糖/奶油/椒麻味',
602         'desc': None,
603         'sale_price': '¥99元',
604         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
605     },
606     {
607         'images': [
608             'goods/images/38_P_1448949220255.jpg'
609         ],
610         'categorys': [
611             '首页',
612             '奶类食品',
613             '奶粉'
614         ],
615         'market_price': '¥84元',
616         'name': '蒙牛未来星儿童成长牛奶骨力型190ml*15盒',
617         'desc': None,
618         'sale_price': '¥70元',
619         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
620     },
621     {
622         'images': [
623             'goods/images/44_P_1448948850187.jpg'
624         ],
625         'categorys': [
626             '首页',
627             '奶类食品',
628             '进口奶品'
629         ],
630         'market_price': '¥70元',
631         'name': '蒙牛特仑苏有机奶250ml×12盒',
632         'desc': None,
633         'sale_price': '¥32元',
634         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
635     },
636     {
637         'images': [
638             'images/201511/goods_img/49_P_1448162819889.jpg'
639         ],
640         'categorys': [
641             '首页',
642             '奶类食品'
643         ],
644         'market_price': '¥1元',
645         'name': '1元支付测试商品',
646         'desc': None,
647         'sale_price': '¥1元',
648         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
649     },
650     {
651         'images': [
652             'goods/images/40_P_1448949038702.jpg'
653         ],
654         'categorys': [
655             '首页',
656             '奶类食品',
657             '进口奶品'
658         ],
659         'market_price': '¥70元',
660         'name': '德运全脂新鲜纯牛奶1L*10盒装整箱',
661         'desc': None,
662         'sale_price': '¥58元',
663         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
664     },
665     {
666         'images': [
667             'goods/images/39_P_1448949115481.jpg'
668         ],
669         'categorys': [
670             '首页',
671             '奶类食品',
672             '有机奶'
673         ],
674         'market_price': '¥38元',
675         'name': '木糖醇红枣早餐奶即食豆奶粉538g',
676         'desc': None,
677         'sale_price': '¥32元',
678         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
679     },
680     {
681         'images': [
682             'goods/images/41_P_1448948980358.jpg'
683         ],
684         'categorys': [
685             '首页',
686             '奶类食品',
687             '原料奶'
688         ],
689         'market_price': '¥26元',
690         'name': '高钙液体奶200ml*24盒',
691         'desc': None,
692         'sale_price': '¥22元',
693         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
694     },
695     {
696         'images': [
697             'goods/images/37_P_1448949284365.jpg'
698         ],
699         'categorys': [
700             '首页',
701             '奶类食品',
702             '国产奶品'
703         ],
704         'market_price': '¥720元',
705         'name': '新西兰进口全脂奶粉900g',
706         'desc': None,
707         'sale_price': '¥600元',
708         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
709     },
710     {
711         'images': [
712             'goods/images/42_P_1448948895193.jpg'
713         ],
714         'categorys': [
715             '首页',
716             '奶类食品',
717             '进口奶品'
718         ],
719         'market_price': '¥43元',
720         'name': '伊利官方直营全脂营养舒化奶250ml*12盒*2提',
721         'desc': None,
722         'sale_price': '¥36元',
723         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
724     },
725 {
726         'sale_price': '¥156元',
727         'images': [
728             'goods/images/27_P_1448947771805.jpg'
729         ],
730         'market_price': '¥187元',
731         'categorys': [
732             '首页',
733             '粮油副食',
734             '厨房调料'
735         ],
736         'desc': None,
737         'name': '维纳斯橄榄菜籽油5L/桶',
738         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
739     },
740     {
741         'sale_price': '¥15元',
742         'images': [
743             'goods/images/23_P_1448948070348.jpg'
744         ],
745         'market_price': '¥18元',
746         'categorys': [
747             '首页',
748             '粮油副食',
749             '食用油'
750         ],
751         'desc': None,
752         'name': '糙米450gx3包粮油米面',
753         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
754     },
755     {
756         'sale_price': '¥45元',
757         'images': [
758             'goods/images/26_P_1448947825754.jpg'
759         ],
760         'market_price': '¥54元',
761         'categorys': [
762             '首页',
763             '粮油副食',
764             '调味品'
765         ],
766         'desc': None,
767         'name': '精炼一级大豆油5L色拉油粮油食用油',
768         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
769     },
770     {
771         'sale_price': '¥26元',
772         'images': [
773             'goods/images/28_P_1448947699948.jpg',
774             'goods/images/28_P_1448947699777.jpg'
775         ],
776         'market_price': '¥31元',
777         'categorys': [
778             '首页',
779             '粮油副食',
780             '南北干货'
781         ],
782         'desc': None,
783         'name': '橄榄玉米油5L*2桶',
784         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
785     },
786     {
787         'sale_price': '¥9元',
788         'images': [
789             'goods/images/24_P_1448948023823.jpg',
790             'goods/images/24_P_1448948023977.jpg'
791         ],
792         'market_price': '¥11元',
793         'categorys': [
794             '首页',
795             '粮油副食',
796             '方便速食'
797         ],
798         'desc': None,
799         'name': '山西黑米农家黑米4斤',
800         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
801     },
802     {
803         'sale_price': '¥12元',
804         'images': [
805             'goods/images/25_P_1448947875346.jpg'
806         ],
807         'market_price': '¥14元',
808         'categorys': [
809             '首页',
810             '粮油副食',
811             '米面杂粮'
812         ],
813         'desc': None,
814         'name': '稻园牌稻米油粮油米糠油绿色植物油',
815         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
816     },
817     {
818         'sale_price': '¥12元',
819         'images': [
820             'goods/images/29_P_1448947631994.jpg'
821         ],
822         'market_price': '¥14元',
823         'categorys': [
824             '首页',
825             '粮油副食',
826             '食用油'
827         ],
828         'desc': None,
829         'name': '融氏纯玉米胚芽油5l桶',
830         'goods_desc':'<p><img src="/media/goods/images/2_20170719161405_249.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161414_628.jpg" title="" alt="2.jpg"/></p><p><img src="/media/goods/images/2_20170719161435_381.jpg" title="" alt="2.jpg"/></p>'
831     }
832 ]
833 
834 pass

1.导入商品分类数据

在db_tools目录下新建py文件(脚本),命名为:import_category_data

 1 #独立使用django的model
 2 import sys
 3 import os
 4 
 5 # 建立外部脚本链接django项目
 6 pwd=os.path.dirname(os.path.realpath(__file__))
 7 sys.path.append(pwd+"../")
 8 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MXshop.settings")
 9 import django
10 django.setup()
11 
12 # 脚本正文
13 
14 from goods.models import GoodsCategory
15 
16 from db_tools.data.category_data import row_data
17 
18 for lev1_cat in row_data:
19     lev1_intance = GoodsCategory()
20     lev1_intance.code = lev1_cat["code"]
21     lev1_intance.name = lev1_cat["name"]
22     lev1_intance.category_type = 1
23     lev1_intance.save()
24 
25     for lev2_cat in lev1_cat["sub_categorys"]:
26         lev2_intance = GoodsCategory()
27         lev2_intance.code = lev2_cat["code"]
28         lev2_intance.name = lev2_cat["name"]
29         lev2_intance.category_type = 2
30         lev2_intance.parent_category = lev1_intance
31         lev2_intance.save()
32 
33         for lev3_cat in lev2_cat["sub_categorys"]:
34             lev3_intance = GoodsCategory()
35             lev3_intance.code = lev3_cat["code"]
36             lev3_intance.name = lev3_cat["name"]
37             lev3_intance.category_type = 3
38             lev3_intance.parent_category = lev2_intance
39             lev3_intance.save()

然后右键==》运行import_category_data.py 脚本

之后再访问商品分类页面:http://127.0.0.1:8000/xadmin/goods/goodscategory/   发现已经将所有商品类别数据都导入进去啦O(∩_∩)O~!

2.导入商品数据

在db_tools目录下新建py文件(脚本),命名为:import_goods_data

 1 import sys
 2 import os
 3 
 4 
 5 pwd = os.path.dirname(os.path.realpath(__file__))
 6 sys.path.append(pwd+"../")
 7 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MXshop.settings")
 8 
 9 import django
10 django.setup()
11 
12 from goods.models import Goods, GoodsCategory, GoodsImage
13 
14 from db_tools.data.product_data import row_data
15 
16 for goods_detail in row_data:
17     goods = Goods()
18     goods.name = goods_detail["name"]
19     goods.market_price = float(int(goods_detail["market_price"].replace("¥", "").replace("元", "")))
20     goods.shop_price = float(int(goods_detail["sale_price"].replace("¥", "").replace("元", "")))
21     goods.goods_brief = goods_detail["desc"] if goods_detail["desc"] is not None else ""
22     goods.goods_desc = goods_detail["goods_desc"] if goods_detail["goods_desc"] is not None else ""
23     goods.goods_front_image = goods_detail["images"][0] if goods_detail["images"] else ""
24 
25     category_name = goods_detail["categorys"][-1]
26     category = GoodsCategory.objects.filter(name=category_name)
27     if category:
28         goods.category = category[0]
29     goods.save()
30 
31     for goods_image in goods_detail["images"]:
32         goods_image_instance = GoodsImage()
33         goods_image_instance.image = goods_image
34         goods_image_instance.goods = goods
35         goods_image_instance.save()

然后右键==》运行import_goods_data.py 脚本

之后再访问商品分类页面:http://127.0.0.1:8000/xadmin/goods/goods/   发现已经将所有商品的数据都导入进去啦O(∩_∩)O~!

但是点击进单个商品时发现,图片没有加载出来!怎么办呢?

1.在settings.py中追加代码:

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

2.在urls.py中增加代码为:

 1 from django.urls import path,include
 2 import xadmin
 3 #
 4 from django.views.static import serve
 5 from MXshop.settings import MEDIA_ROOT
 6 
 7 urlpatterns = [
 8     path('xadmin/', xadmin.site.urls),
 9     path('ueditor/',include('DjangoUeditor.urls' )),
10     #配置上传文件的访问处理函数
11     path('media/<path:path>',serve,{'document_root':MEDIA_ROOT}),
12 ]

这时,再重启项目,然后访问后台,查看单个商品页面,发现图片也都加载出来啦O(∩_∩)O~!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、项目初始化:
    • 1.安插件
      • 2.建项目配置与数据库链接
        • 3.项目结构基本配置
        • 二、Model设计
          • 1.根据电商项目的需求分析,需要四个app对应用户、商品、交易、操作:users、goods、trade、user_operation
            • 2.model设计  
              • 1.user model 设计
              • 2.goods的model设计
              • 3.trade交易的model设计
              • 4.用户操作(user_operation)的model设计
              • 5.创建数据
          •  三、xadmin后台管理系统的配置  
            • 1.xadmin所需要的依赖包
              • 2.用于导出Excel所需要的包  
                • 3.导入xadmin  
                  • 4.富文本编辑器ueditor
                    • 5.xadmin注册models
                      • 6.登录xadmin
                      • 四.测试数据(商品和商品类别)的导入
                        • 3.独立使用django的model
                          • 1.导入商品分类数据
                          • 2.导入商品数据
                      相关产品与服务
                      云数据库 SQL Server
                      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档