• 1-1 课程导学
  • 2-1 Pycharm的安装和简单使用
  • 2-2 MySQL和Navicat的安装和使用
  • 2-3 Windows和Linux下安装Python2和Python3
  • 2-4 虚拟环境的安装和配置
  • 2-5 Vue开发环境搭建
  • 2-6 资源获取方式和提问方式
  • 3-1 项目初始化
  • 3-2 User Model设计
  • 3-3 Goods Model设计
  • 3-4 Trade交易的Model设计
  • 3-5 用户操作的Model设计
  • 3-6 migrations原理及表生成
  • 3-7 xadmin后台管理系统的配置
  • 3-8 导入商品类别数据
  • 3-9 导入商品和商品类别数据
  • 4-1 restful API介绍
  • 4-2 Vue的基本概念介绍
  • 4-3 Vue源码结构介绍
  • 5-1 Django的view实现商品列表页
  • 5-2 Django的serializer序列化model
  • 5-3 apiview方式实现商品列表页-1
  • 5-4 apiview实现商品列表页-2
  • 5-5 drf的modelserial实现商品列表页功能
  • 5-6 GenericView方式实现商品列表页和分页功能介绍
  • 5-7 viewsets和router完成商品列表项
  • 5-8 drf的Apiview、GenericView、Viewset和Router的原理分析
  • 5-9 drf的request和response
  • 5-10 drf的过滤
  • 5-11 drf的搜索和排序
  • 5-12 总结
  • 6-1 商品列表数据接口-1
  • 6-2 商品类别数据接口-2
  • 6-3 Vue展示商品分类数据
  • 6-4 Vue展示商品列表页数据-1
  • 6-5 Vue展示商品列表页数据-2
  • 6-6 Vue的商品搜索功能
  • 7-1 drf的token登录和原理-1
  • 7-2 drf的token登录和原理-2
  • 7-3 viewsets配置认证类
  • 7-4 json web token的原理
  • 7-5 json web token方式完成用户认证
  • 7-6 Vue和jwt接口调试
  • 7-7 云片网发送短信验证码
  • 7-8 drf实现发送短信验证码接口-1
  • 7-9 drf实现发送短信验证码接口-2
  • 7-10 user serializer和validator验证一1
  • 7-11 user serializer和validator验证-2
  • 7-12 Django的信号量实现用户密码修改;
  • 7-13 Vue和注册功能联调
  • 8-1 viewsets实现商品详情页接口
  • 8-2 热卖商品接口实现
  • 8-3 用户收藏接口实现
  • 8-4 drf的权限验证
  • 8-5 用户收藏功能和Vue联调
  • 9-1 drf的api文档自动生成和功能详解
  • 9-2 动态设置serializer和permission获取用户信息
  • 9-3 Vue和用户接口信息联调
  • 9-4 用户个人信息修改
  • 9-5 用户收藏功能
  • 9-6 用户留言功能
  • 9-7 用户收货地址列表页接口开发
  • 9-8 Vue和收货地址接口联调
  • 10-1 购物车功能需求分析和加入到购物车实现
  • 10-2 修改购物车数量
  • 10-3 Vue和购物车接口联调
  • 10-4 订单管理接口-1
  • 10-5 订单管理接口-2
  • 10-6 Vue个人中心订单接口调试
  • 10-7 Pycharm远程代码调试-1
  • 10-8 Pycharm远程代码调试-2
  • 10-9 支付宝公钥、私钥和沙箱环境配置
  • 10-10 支付宝开发文档解读
  • 10-11 支付宝支付源码解读
  • 10-12 支付宝通知接口验证
  • 10-13 Django集成支付宝notify_url和return_url接口-1
  • 10-14 Django集成支付宝notify_url和return_url接口-2
  • 10-15 支付宝接口和Vue联调-1
  • 10-16 支付宝接口和Vue联调-2
  • 11-1 轮播图接口实现和Vue调试
  • 11-2 新品功能接口开发
  • 11-3 首页商品分类显示功能-1
  • 11-4 首页商品分类显示功能-2
  • 11-5 商品点击数、收藏数修改
  • 11-6 商品库存和销量修改
  • 11-7 drf的缓存设置
  • 11-8 drf配置Redis缓存
  • 11-9 drf的throttle设置api的访问速率
  • 12-1 第三方登录开发模式以及oauth2.0简介
  • 12-2 oauth2.0获取微博的access_token
  • 12-3 social_django集成第三方登录-1
  • 12-4 social_django集成第三方登录-2
  • 13-1 sentry的介绍和通过docker搭建sentry
  • 13-2 sentry的功能
  • 13-3 sentry集成到django rest framework中-1
  • 13-4 sentry集成到django rest framework中-2

1-1 课程导学

1.1.1 掌握的技术;

  • Vue + Django REST framework前后端分离的技术;
  • 彻底玩转restful api开发流程;
  • Django REST framework的功能实现和核心源代码分析;
  • Sentry完成线上系统的错误日志的监控和告警;
  • 第三方登录和支付宝支付的集成;
  • 本地调试远程服务器代码的技巧;

1.1.2 看课程

2-1 Pycharm的安装和简单使用

2-2 MySQL和Navicat的安装和使用1

2-3 Windows和Linux下安装Python2和Python3

2.3.1 Python2.x和Python3.x的安装;

2-4 虚拟环境的安装和配置

2.4.1 Virtualenv和virtualenvwrapper工具创建开发环境;

2-5 Vue开发环境搭建

2.5.1 前端开发IDE神器-WebStorm;

2.5.3 Node.js的安装,使用内部的npm;

2.5.4 cnpm淘宝镜像的使用;

2-6 资源获取方式和提问方式

2.6.1 慕课网;

2.6.3 coding和码云;

2.6.4 提问问题方式;

3-1 项目初始化

3.1.1 DjangoREST framework是基于 Django开发的用于 API开发的框架;

  django-rest-framework,是一套基于Django 的 REST 框架,是一个强大灵活的构建 Web API 的工具包。

3.1.2 DjangoRESTframework依赖Django;

官方文档:http://www.django-rest-framework.org/

  • pip install djangorestframework
  • pip install markdown
  • pip install django-filter

3.1.3 settings.py中修改数据库指向为为MySQL;

  1. DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'MxShop',
    'USER': 'root',
    'PASSWORD': 'Tqtl911!@#)^',
    'HOST': '127.0.0.1',
    'PORT': '3306',
    'OPTIONS': {'init_command': 'SET default_storage_engine =INNODB;'},
    }
    }

3.1.4 pip3 install mysqlclient 代替python-mysql;

报错信息:

  1. 'Did you install mysqlclient or MySQL-python?' % e
  2. django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
  3. Did you install mysqlclient or MySQL-python?
  1. Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/v_/mm78zg6d68j30vn2f3wq3ck40000gn/T/pip-install-0m9q5pa9/mysqlclient/

解决步骤:

  • 尝试安装mysqlclient,pip3 install mysqlclient
  • 安装pymysql;
  • 在__init__.py中添加两行;
  1. import pymysql
  2. pymysql.install_as_MySQLdb()

  1.  

3-2 User Model设计

3.2.1 创建users、goods、trade、user_operation等app,并移动至apps目录下;

3.2.2 进行users.models.py的设计;

3.2.3 settings.py中配置AUTH_USER_MODEL来替代Django本身的AUTH属性;

users.models.py;

  1. from datetime import datetime
  2.  
  3. from django.db import models
  4.  
  5. # Create your models here.
  6. from django.contrib.auth.models import AbstractUser
  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", u"男"), ("female", u"女")), default="female",
  15. verbose_name="性别")
  16. mobile = models.CharField(max_length=11, verbose_name="电话")
  17. email = models.EmailField(max_length=100, null=True, blank=True, verbose_name="邮箱")
  18.  
  19. class Meta:
  20. verbose_name = "用户"
  21. verbose_name_plural = verbose_name
  22.  
  23. def __str__(self):
  24. return self.name
  25.  
  26. class VerifyCode(models.Model):
  27. """
  28. 短信验证码
  29. """
  30. code = models.CharField(max_length=10, verbose_name="验证码")
  31. mobile = models.CharField(max_length=11, verbose_name="电话")
  32. add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
  33.  
  34. class Meta:
  35. verbose_name = "短信验证码"
  36. verbose_name_plural = verbose_name
  37.  
  38. def __str__(self):
  39. return self.code

3-3 Goods Model设计

3.3.1 goods Model的设计;

goods/models.py;

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

3.4.1 购物车和订单的概念;

trade/models.py设计;

  1. from datetime import datetime
  2. from django.db import models
  3.  
  4. from django.contrib.auth import get_user_model
  5. from goods.models import Goods
  6.  
  7. User = get_user_model()
  8.  
  9. # Create your models here.
  10.  
  11. class ShoppingCart(models.Model):
  12. """
  13. 购物车
  14. """
  15. user = models.ForeignKey(User, verbose_name=u"用户")
  16. goods = models.ForeignKey(Goods, verbose_name=u"商品")
  17. nums = models.IntegerField(default=0, verbose_name=u"购买数量")
  18. add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")
  19.  
  20. class Meta:
  21. verbose_name = "购物车"
  22. verbose_name_plural = verbose_name
  23.  
  24. def __str__(self):
  25. return "%s(%d)".format(self.goods.name, self.goods_num)
  26.  
  27. class OrderInfo(models.Model):
  28. """
  29. 订单
  30. """
  31. ORDER_STATUS = (
  32. ("sucess", "成功"),
  33. ("cancel", "取消"),
  34. ("cancel", "待支付"),
  35. )
  36. # PAY_TYPE = (
  37. # ("alipay", "支付宝"),
  38. # ("wechat", "微信"),
  39. # )
  40. user = models.ForeignKey(User, verbose_name=u"用户")
  41. order_sn = models.CharField(max_length=30, unique=True, verbose_name="订单号")
  42. trade_no = models.CharField(max_length=50, unique=True, null=True, blank=True, verbose_name=u"交易号")
  43. pay_status = models.CharField(choices=ORDER_STATUS, max_length=10, verbose_name="订单状态")
  44. post_script = models.CharField(max_length=200, verbose_name="订单留言")
  45. order_mount = models.FloatField(default=0.0, verbose_name="订单金额")
  46. pay_time = models.DateTimeField(null=True, blank=True, verbose_name="支付时间")
  47. # 用户信息
  48. address = models.CharField(max_length=100, default="", verbose_name="收货地址")
  49. signer_name = models.CharField(max_length=20, default="", verbose_name="签收人")
  50. signer_mobile = models.CharField(max_length=11, verbose_name="联系电话")
  51. add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
  52.  
  53. class Meta:
  54. verbose_name = "订单"
  55. verbose_name_plural = verbose_name
  56.  
  57. def __str__(self):
  58. return str(self.order_sn)
  59.  
  60. class OrderGoods(models.Model):
  61. """
  62. 订单的商品详情
  63. """
  64. order = models.ForeignKey(OrderInfo, verbose_name="订单信息")
  65. goods = models.ForeignKey(Goods, verbose_name="商品")
  66. goods_num = models.IntegerField(default=0, verbose_name="商品数量")
  67. add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
  68.  
  69. class Meta:
  70. verbose_name = "订单商品"
  71. verbose_name_plural = verbose_name
  72.  
  73. def __str__(self):
  74. return str(self.order.order_sn)

3-5 用户操作的Model设计

3.5.1 user_opration下的models.py设计;

  1. from datetime import datetime
  2.  
  3. from django.db import models
  4. from django.contrib.auth import get_user_model
  5.  
  6. from goods.models import Goods
  7.  
  8. User = get_user_model()
  9.  
  10. # Create your models here.
  11. class UserFav(models.Model):
  12. """
  13. 用户收藏
  14. """
  15. user = models.ForeignKey(User, verbose_name="用户")
  16. goods = models.ForeignKey(Goods, verbose_name="商品")
  17. add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
  18.  
  19. class Meta:
  20. verbose_name = "用户收藏"
  21. verbose_name_plural = verbose_name
  22.  
  23. def __str__(self):
  24. return self.user.name
  25.  
  26. class UserLeavingMessage(models.Model):
  27. """
  28. 用户留言
  29. """
  30. MESSAGE_CHOICES = (
  31. (1, "留言"),
  32. (2, "投诉"),
  33. (3, "询问"),
  34. (4, "售后"),
  35. (5, "求购"),
  36. )
  37. user = models.ForeignKey(User, verbose_name="用户")
  38. message_type = models.IntegerField(default=1, choices=MESSAGE_CHOICES, 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. class UserAddress(models.Model):
  53. """
  54. 用户收货地址
  55. """
  56. user = models.ForeignKey(User, verbose_name="用户")
  57. address = models.CharField(max_length=100, default="", verbose_name="区域")
  58. signer_name = models.CharField(max_length=100, default="", verbose_name="签收人")
  59. signer_mobile = models.CharField(max_length=11, default="", verbose_name="电话")
  60. add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
  61.  
  62. class Meta:
  63. verbose_name = "收货地址"
  64. verbose_name_plural = verbose_name
  65.  
  66. def __str__(self):
  67. return self.address

3-6 migrations原理及表生成

3.6.1 settings.py中配置了AUTH_USER_MODEL = 'users.UserProfile'就不会再生成auth_user表;

3.6.2 如果migrate不生效,可删除django_migrations中的部分表;

3.6.3 通过Navvicat 与migrations不建议混用;

3-7 xadmin后台管理系统的配置

3.7.1 xadmin的配置settings.py中添加两项:xadmin、crispy_forms并在各个app中添加xadmin.py文件;

3.7.2 安装xadmin的依赖包文件;

地址如下:https://github.com/sshwsfc/xadmin/blob/master/requirements.txt

  • pip3 install xlwt xlsxwriter

3.7.3 改为中文显示;

  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

3-8 导入商品类别数据

3.8.1 category_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. ]

3.8.2 import_category_data.py

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

3-9 导入商品和商品类别数据

3.9.1 product_data.py

  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

3.9.2 import_goods_data.py

# -*- coding: utf-8 -*-
__author__ = 'bobby'
import sys
import os pwd = os.path.dirname(os.path.realpath(__file__))
sys.path.append(pwd+"../")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MxShop.settings") import django
django.setup() from goods.models import Goods, GoodsCategory, GoodsImage from db_tools.data.product_data import row_data for goods_detail in row_data:
goods = Goods()
goods.name = goods_detail["name"]
goods.market_price = float(int(goods_detail["market_price"].replace("¥", "").replace("元", "")))
goods.shop_price = float(int(goods_detail["sale_price"].replace("¥", "").replace("元", "")))
goods.goods_brief = goods_detail["desc"] if goods_detail["desc"] is not None else ""
goods.goods_desc = goods_detail["goods_desc"] if goods_detail["goods_desc"] is not None else ""
goods.goods_front_image = goods_detail["images"][0] if goods_detail["images"] else "" category_name = goods_detail["categorys"][-1]
category = GoodsCategory.objects.filter(name=category_name)
if category:
goods.category = category[0]
goods.save() for goods_image in goods_detail["images"]:
goods_image_instance = GoodsImage()
goods_image_instance.image = goods_image
goods_image_instance.goods = goods
goods_image_instance.save()

4-1 restful API介绍

4.1.1 RESTful API详解;

https://www.runoob.com/w3cnote/restful-architecture.html

4.1.2 前后端分离的优缺点,为什么要进行前后端分离;

  • 1、PC、APP、PAD等多端以及Android、IOS适应;
  • 2、SPA开发模式流程,SPA,single page即单页面——后端提供API接口;
  • 3、前后端开发职责不清楚,模板语言DTL、Jinja2应该由谁来写?
  • 4、PHP和Java的模本可以写比较复杂的语法;
  • 5、开发效率的问题,前后端岗位互等;
  • 6、前端一直配置着后端,能力受限;
  • 7、后台开发语言和模板高度耦合,导致开发语言依赖严重;

1、前后端学习门槛增加;

2、数据依赖导致文档重要性增加;

3、前端工作量加大;

4、SEO的难度加大-爬虫拿到的数据将减少;如果不考虑SEO,那么前后端分离将成为必然;

5、后端开发模式迁移成本增加;

4.1.3 RESTful API是目前前后端分离的最佳实践-即约定好的标准;

  • 轻量,直接通过http,不需要额外的协议,post、get、put、delete的操作;
  • 面向资源,一幕了然,具有自解释性;比如商品、课程;
  • 数据描述简单,一般通过json或者xml做数据通信;

https://www.ruanyifeng.com/blog/2011/09/restful.html

https://www.ruanyifeng.com/blog/2014/05/restful_api.html

4-2 Vue的基本概念介绍

4.2.1 概念初识;

  • 前端工程化;
  • 数据双向绑定——mvvm;
  • 组件化开发;

4.2.2 Node.js以及webpack出来之后,带动了js的飞速发展;

vue.js:https://cn.vuejs.org/v2/guide/

4.2.3 Vue开发的几个概念;

  • webpack-将所有东西变成一个js文件;
  • vue、vuex、vue-router、axios(发送Ajax请求);
  • ES6、babel;基于ES6开发,babel是一个将ES6转换为ES5的转换器;

4-3 Vue源码结构介绍

4.3.1 Vue项目目录结构介绍;

5-1 Django的view实现商品列表页

5.1.1 Chrome浏览器添加JsonView插件;

views_base.py;

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Project: MxShop
# Software: PyCharm
# Time : 2018-10-03 15:55
# File : views_base.py
# Author : 天晴天朗
# Email : tqtl@tqtl.org
from django.views.generic.base import View
# from django.views.generic import ListView from goods.models import Goods class GoodsListView(View):
def get(self, request):
"""
通过Django的view实现商品列表;
:param request:
:return:
"""
json_list = []
goods = Goods.objects.all()[:10]
# for good in goods:
# json_dict = {}
# json_dict["name"] = good.name
# json_dict["category"] = good.category.name
# json_dict["market_price"] = good.market_price
# # json_dict["add_time"] = good.add_time
# json_list.append(json_dict)
# 方法二:
# from django.forms.models import model_to_dict
# for good in goods:
# json_dict = model_to_dict(good)
# json_list.append(json_dict)
import json
from django.core import serializers
json_data = serializers.serialize("json", goods)
json_data = json.loads(json_data)
from django.http import HttpResponse, JsonResponse return JsonResponse(json_data, safe=False)

5-2 Django的serializer序列化model

5.2.1 Django中serializer序列化model的使用; 

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Project: MxShop
# Software: PyCharm
# Time : 2018-10-03 15:55
# File : views_base.py
# Author : 天晴天朗
# Email : tqtl@tqtl.org
from django.views.generic.base import View
# from django.views.generic import ListView from goods.models import Goods class GoodsListView(View):
def get(self, request):
"""
通过Django的view实现商品列表;
:param request:
:return:
"""
json_list = []
goods = Goods.objects.all()[:10] import json
from django.core import serializers
json_data = serializers.serialize("json", goods)
json_data = json.loads(json_data)
from django.http import HttpResponse, JsonResponse return JsonResponse(json_data, safe=False)

5-3 apiview方式实现商品列表页-1

5.3.1 使用drf代替Django REST framework的读法;

  • pip3 install coreapi djangorestframework markdown django-filter django-guardian

5.3.2 为什么使用Django REST framework来代替Django + serializer呢?

5.3.3 一定要在settings.py中配置rest_framework;

5-4 apiview实现商品列表页-2

5.4.1 报错处理TypeError: __str__ returned non-string (type NoneType);

https://blog.csdn.net/WangXJ101010/article/details/78458481

goods/views.py;

from django.shortcuts import render

# Create your views here.
from .serializers import GoodsSerializer
from rest_framework.views import APIView
from rest_framework.response import Response from .models import Goods class GoodsListView(APIView):
"""
List all goods
""" def get(self, request, format=None):
goods = Goods.objects.all()[:10]
goods_serializer = GoodsSerializer(goods, many=True)
return Response(goods_serializer.data)

5-5 drf的modelserial实现商品列表页功能

5.5.1 Bug处理将name改为username;

5.5.2 rest_framework中的状态码;

5-6 GenericView方式实现商品列表页和分页功能介绍

5.6.1 rest_framework中的分页功能的实现;

goods/views.py;

from django.shortcuts import render
from .serializers import GoodsSerializer from rest_framework.response import Response
from rest_framework import mixins
from rest_framework import generics
from rest_framework.pagination import PageNumberPagination from .models import Goods # Create your views here.
class GoodsPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
page_query_param = "p"
max_page_size = 100 class GoodsListView(generics.ListAPIView):
"""
商品列表页
"""
queryset = Goods.objects.all()[:10]
serializer_class = GoodsSerializer
pagination_class = GoodsPagination

5-7 viewsets和router完成商品列表项

5.7.1 viewsets和router的使用;

urls.py;

"""MxShop URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url, include
from django.contrib import admin
import xadmin
from MxShop.settings import MEDIA_ROOT
from django.views.static import serve
from rest_framework.documentation import include_docs_urls
from rest_framework.routers import DefaultRouter from goods.views import GoodsListViewSet router = DefaultRouter()
# 配置goods的url;
router.register(r'goods', GoodsListViewSet) urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
# 商品列表页;
url(r'^', include(router.urls)),
url(r'docs/', include_docs_urls(title="慕学生鲜")),
]

5-8 drf的Apiview、GenericView、Viewset和Router的原理分析

5.8.1 xxxx;

5-9 drf的request和response

5.9.1 drf中的request和response;

5-10 drf的过滤

5.10.1 filter的使用;

5-11 drf的搜索和排序

5.11 drf中添加搜索和排序字段;

goods/views.py;

from django.shortcuts import render
from .serializers import GoodsSerializer
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import mixins
from rest_framework import generics
from rest_framework import filters
from rest_framework.pagination import PageNumberPagination
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import viewsets from .models import Goods
from .filter import GoodsFilter # Create your views here.
class GoodsPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
page_query_param = "p"
max_page_size = 100 class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
"""
商品列表页-分页,搜索,过滤,排序;
"""
queryset = Goods.objects.all()
serializer_class = GoodsSerializer
pagination_class = GoodsPagination
filter_backends = (DjangoFilterBackend,filters.SearchFilter,filters.OrderingFilter)
filter_class = GoodsFilter
search_fields = ('=name', 'goods_brief', 'goods_desc')
ordering_fields = ('sold_num','add_time')

5-12 总结

6-1 商品列表数据接口-1

6-2 商品类别数据接口-2

6.2.1 serializer.py;

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Project: MxShop
# Software: PyCharm
# Time : 2018-10-03 16:42
# File : serializers.py
# Author : 天晴天朗
# Email : tqtl@tqtl.org from rest_framework import serializers
from goods.models import Goods, GoodsCategory class CategorySerializer3(serializers.ModelSerializer):
class Meta:
model = GoodsCategory
fields = "__all__" class CategorySerializer2(serializers.ModelSerializer):
sub_cat = CategorySerializer3(many=True) class Meta:
model = GoodsCategory
fields = "__all__" class CategorySerializer(serializers.ModelSerializer):
sub_cat = CategorySerializer2(many=True) class Meta:
model = GoodsCategory
fields = "__all__" class GoodsSerializer(serializers.ModelSerializer):
category = CategorySerializer() class Meta:
model = Goods
fields = "__all__"

6-3 Vue展示商品分类数据

6.3.1 跨域问题的解决;https://github.com/ottoyiu/django-cors-headers

6-4 Vue展示商品列表页数据-1

6-5 Vue展示商品列表页数据-2

6-6 Vue的商品搜索功能

7-1 drf的token登录和原理-1

7.1.1 通过执行数据库迁移操作,生成authtoken_token表;

7-2 drf的token登录和原理-2

7.2.1 Django的请求流程图;

http://www.projectsedu.com/2016/10/17/django%E4%BB%8E%E8%AF%B7%E6%B1%82%E5%88%B0%E8%BF%94%E5%9B%9E%E9%83%BD%E7%BB%8F%E5%8E%86%E4%BA%86%E4%BB%80%E4%B9%88/

7-3 viewsets配置认证类

7.3.1 goods/views.py;

from django.shortcuts import render

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import mixins
from rest_framework import generics
from rest_framework import filters
from rest_framework.pagination import PageNumberPagination
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import viewsets
from rest_framework.authentication import TokenAuthentication
from .models import Goods, GoodsCategory
from .filters import GoodsFilter
from .serializers import GoodsSerializer, CategorySerializer # Create your views here.
class GoodsPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'page_size'
page_query_param = "page"
max_page_size = 100 class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
"""
商品列表页-分页,搜索,过滤,排序;
"""
queryset = Goods.objects.all()
serializer_class = GoodsSerializer
pagination_class = GoodsPagination
authentication_classes = (TokenAuthentication,)
filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
filter_class = GoodsFilter
search_fields = ('=name', 'goods_brief', 'goods_desc')
ordering_fields = ('sold_num', 'add_time') class CategoryViewset(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
"""
list:
商品分类列表数据;
"""
queryset = GoodsCategory.objects.filter(category_type=1)
serializer_class = CategorySerializer

7-4 json web token的原理

7.4.1 JWT-Json Web Token的原理;

https://www.jianshu.com/p/180a870a308a

7-5 json web token方式完成用户认证

7.5.1 djangorestframework-jwt的安装;

官方说明: http://getblimp.github.io/django-rest-framework-jwt/

7-6 Vue和jwt接口调试

7.6.1 jwt在Vue项目中的接口调试;

7-7 云片网发送短信验证码

7.7.1 云片网的短信验证码服务;

云片网:https://www.yunpian.com/

utils/yunpian.py;

#!/usr/bin/python3
# -*- coding:utf-8 -*-
# Project: MxShop
# Software: PyCharm
# Time : 2018-10-04 23:03
# File : yunpian.py
# Author : 天晴天朗
# Email : tqtl@tqtl.org import requests class YunPian(object):
def __init__(self, api_key):
self.api_key = api_key
self.single_send_url = "https://sms.yunpian.com/v2/sms/single_send.json" def send_sms(self, code, mobile):
parmas = {
"apikey": self.api_key,
"mobile": mobile,
"text": "【崔晓昭】您的验证码是{code}。如非本人操作,请忽略本短信".format(code=code),
}
response = requests.post(self.single_send_url, data=parmas)
import json
re_dict = json.loads(response.text)
print(re_dict) if __name__ == '__main__':
yun_pian = YunPian("13a519fbd6bede962a55e7debdb431bc")
yun_pian.send_sms("", "")

7-8 drf实现发送短信验证码接口-1

7-9 drf实现发送短信验证码接口-2

7-10 user serializer和validator验证一1

7-11 user serializer和validator验证-2

7-12 Django的信号量实现用户密码修改;

7-13 Vue和注册功能联调

8-1 viewsets实现商品详情页接口

8-2 热卖商品接口实现

8-3 用户收藏接口实现

8-4 drf的权限验证

8-5 用户收藏功能和Vue联调

9-1 drf的api文档自动生成和功能详解

9-2 动态设置serializer和permission获取用户信息

9-3 Vue和用户接口信息联调

9-4 用户个人信息修改

9-5 用户收藏功能

9-6 用户留言功能

9-7 用户收货地址列表页接口开发

9-8 Vue和收货地址接口联调

10-1 购物车功能需求分析和加入到购物车实现

10-2 修改购物车数量

10-3 Vue和购物车接口联调

10-4 订单管理接口-1

10-5 订单管理接口-2

10-6 Vue个人中心订单接口调试

10-7 Pycharm远程代码调试-1

10-8 Pycharm远程代码调试-2

10-9 支付宝公钥、私钥和沙箱环境配置

10-10 支付宝开发文档解读

10-11 支付宝支付源码解读

10-12 支付宝通知接口验证

10-13 Django集成支付宝notify_url和return_url接口-1

10-14 Django集成支付宝notify_url和return_url接口-2

10-15 支付宝接口和Vue联调-1

10-16 支付宝接口和Vue联调-2

11-1 轮播图接口实现和Vue调试

11-2 新品功能接口开发

11-3 首页商品分类显示功能-1

11-4 首页商品分类显示功能-2

11-5 商品点击数、收藏数修改

11-6 商品库存和销量修改

11-7 drf的缓存设置

11-8 drf配置Redis缓存

11-9 drf的throttle设置api的访问速率

12-1 第三方登录开发模式以及oauth2.0简介

12-2 oauth2.0获取微博的access_token

12-3 social_django集成第三方登录-1

12-4 social_django集成第三方登录-2

13-1 sentry的介绍和通过docker搭建sentry

13-2 sentry的功能

13-3 sentry集成到django rest framework中-1

13-4 sentry集成到django rest framework中-2

Vue+Django REST framework打造生鲜电商项目的更多相关文章

  1. 引爆潮流技术 Vue+Django REST framework打造生鲜电商项目

    引爆潮流技术Vue+Django REST framework打造生鲜电商项目 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受, ...

  2. web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝

    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...

  3. web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍

    web前端Vue+Django rest framework 框架 生鲜电商项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...

  4. Django REST framework+Vue 打造生鲜电商项目(笔记二)

    (转自https://www.cnblogs.com/derek1184405959/p/8768059.html)(有修改) 接下来开始引入django resfulframework,体现它的强大 ...

  5. Django REST framework+Vue 打造生鲜电商项目(笔记四)

    (PS:部分代码和图片来自博客:http://www.cnblogs.com/derek1184405959/p/8813641.html.有增删) 一.用户登录和手机注册 1.drf的token功能 ...

  6. Django REST framework+Vue 打造生鲜电商项目(笔记十)

    (from:https://www.cnblogs.com/derek1184405959/p/8877643.html  有修改) 十三.首页.商品数量.缓存和限速功能开发 首先把pycharm环境 ...

  7. Django REST framework+Vue 打造生鲜电商项目(笔记九)

    (from:http://www.cnblogs.com/derek1184405959/p/8859309.html) 十二.支付宝沙箱环境配置 12.1.创建应用 进入蚂蚁金服开放平台(https ...

  8. Django REST framework+Vue 打造生鲜电商项目(笔记三)

    (PS:转载自http://www.cnblogs.com/derek1184405959/p/8810591.html  有修改) 一.drf的过滤 (1)添加到app里面 INSTALLED_AP ...

  9. Django REST framework+Vue 打造生鲜电商项目(笔记十一)

    (form: http://www.cnblogs.com/derek1184405959/p/8886796.html 有修改) 十四.social_django 集成第三方登录 1.申请应用 进入 ...

随机推荐

  1. 【ros】【bug】gtk2\3 冲突

    ORBSLAM2首次运行出现GTK冲突. Gtk-ERROR **: GTK+ 3 symbols detected. Using GTK+ 2.x and GTK+ 3 in the same pr ...

  2. shell中的判断语句

    1.字符串判断 str1 = str2 当两个串有相同内容.长度时为真 str1 != str2 当串str1和str2不等时为真 -n str1 当串的长度大于0时为真(串非空,变量) -z str ...

  3. SQL优化 · 经典案例 · 索引篇

    Introduction 在这些年的工作之中,由于SQL问题导致的数据库故障层出不穷,下面将过去六年工作中遇到的SQL问题总结归类,还原问题原貌,给出分析问题思路和解决问题的方法,帮助用户在使用数据库 ...

  4. 重置SQLSERVER表的自增列,让自增列重新计数【转】

    很多时候我们需要重置某个表的自增列,让自增列重新从1开始记数.最蠢的方法当然是把该表删掉再重新建表了.其实,还有其它的方法可以重置自增列的值: 方法一:使用TRUNCATE TABLE语句: TRUN ...

  5. 查看mysql历史命令

    默认情况下操作mysql会在家目录下创建一个隐藏的mysql历史命令文件.mysql_history 在管理授权mysql账户时也会记录这些明文密码到这个文件,非常的不安全 [root@localho ...

  6. SAP成都研究院C4C光明左使:SAP Cloud for Customer 使用SAP UI5的独特之处

    大家好,今天的文章来自我的同事,Yang Joey. 2017年7月,SAP成都研究院C4C开发团队刚刚建立.某个周一早晨的Scrum meeting,新出现一位眉清目秀的小伙子,向大家自我介绍:&q ...

  7. java 的http请求方式:HttpURLConnection和HttpClient

    1.要了解一些概念性的东西,比如Http的协议以及协议头等一些东东 2.HttpURLConnection一般步骤:创建URL对象==>获取URL的HttpURLConnection对象实例== ...

  8. POJ 2429 GCD & LCM Inverse(Miller-Rabbin素性测试,Pollard rho质因子分解)

    x = lcm/gcd,假设答案为a,b,那么a*b = x且gcd(a,b) = 1,因为均值不等式所以当a越接近sqrt(x),a+b越小. x的范围是int64的,所以要用Pollard_rho ...

  9. hdu-3549 Flow Problem---最大流模板题(dinic算法模板)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3549 题目大意: 给有向图,求1-n的最大流 解题思路: 直接套模板,注意有重边 传送门:网络流入门 ...

  10. 2017.12.2 用java做一个日历

    1.先判断输入的日期是否为闰年 2.在判断输入的月份是否为2月 3.在获取输入的年份和月份的1月1日 的列数 4.在输出 import java.util.*; public class demo{ ...