安装django就不必说了,下载安装mysql,还有跟数据库连接的相关包pymysql,做图片处理的包pillow
安装 djangorestframework、markdown、django-filter ( 如果发生安装超时,可以隔几秒再重新执行安装命令,我也按了好几次)
pip install djangorestframework
pip install markdown # Markdown support for the browsable API.
pip install django-filter
打开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项目启动成功页面。
项目目录下新建包目录: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/ 没报错的话,项目初始化就完成了。
打开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',
]
设计整个项目系统的时候,第一步一定是设计用户的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
在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
第三方扩展功能代码,往往需要调用用户表(在本项目中是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)
在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
打开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
数据库中的数据表雏形,就建立完成啦!
django 2.0 #已经安装了
django-crispy-forms
django-reversion
future
httplib2
six
xlwt
xlsxwriter
xlrd
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
在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 %}
在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)
修改配置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/')
在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
在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~!
在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~!