系列文章目录
需求分析——基于Django框架的天天生鲜电商网站项目系列博客(一)网站框架搭建——基于Django框架的天天生鲜电商网站项目系列博客(二)用户注册模块——基于Django框架的天天生鲜电商网站项目系列博客(三)用户登录模块——基于Django框架的天天生鲜电商网站项目系列博客(四)用户中心模块——基于Django框架的天天生鲜电商网站项目系列博客(五)分布式FastDFS文件系统——基于Django框架的天天生鲜电商网站项目系列博客(六)首页——基于Django框架的天天生鲜电商网站项目系列博客(七)详情页——基于Django框架的天天生鲜电商网站项目系列博客(八)列表页——基于Django框架的天天生鲜电商网站项目系列博客(九)商品搜索——基于Django框架的天天生鲜电商网站项目系列博客(十)购物车记录添加——基于Django框架的天天生鲜电商网站项目系列博客(十一)购物车记录更新——基于Django框架的天天生鲜电商网站项目系列博客(十二)订单生成——基于Django框架的天天生鲜电商网站项目系列博客(十三)订单并发处理——基于Django框架的天天生鲜电商网站项目系列博客(十四)订单支付和评论——基于Django框架的天天生鲜电商网站项目系列博客(十五)网站部署——基于Django框架的天天生鲜电商网站项目系列博客(十六)项目总结——基于Django框架的天天生鲜电商网站项目系列博客(十七)项目资源下载
天天生鲜电商网站项目源码Github地址(可Fork可Clone)天天生鲜电商网站项目源码Gitee地址(可Fork可Clone)天天生鲜电商网站项目源码压缩包下载(直接使用)天天生鲜电商网站项目所需全部工具合集打包下载(nginx、libfastcommon、fastdfs-nginx、fastdfs)天天生鲜电商网站项目MySql数据库文件(直接导入MySql数据库)Django1.8官方文档(中文版)文章目录
系列文章目录项目资源下载前言一、SPU与SKU的概念1.1 SPU1.2 SKU二、数据库设计2.1 商品模块表2.2 购物车模块表2.3 订单信息模块表三、项目框架搭建3.1 创建项目3.2 创建应用3.3 完善目录结构3.4 配置项目下的settings.py3.5 配置项目下的urls.py3.6 配置应用下的urls.py3.7 配置应用下的models.py3.8 创建模型抽象基类3.9 指定Django认证系统使用的模型类3.10 生成数据库文件3.11 生成数据库迁移文件3.12 启动服务测试3.13 Web端访问项目四、常见问题解答4.1 项目在部署时报错4.2 项目路由配置错误4.3 生成数据库文件报错4.4 生成数据库迁移文件错误4.5 启动服务测试报错4.6 编码报错总结前言
基于上一篇博客的学习,我们大致了解了整个项目的构成,以及我们需要做的工作。首先要明白,一个网站又或者是一个应用,都需要数据做支撑,那么这个电商网站的数据结构是什么我们需要明白,所以第一步我们需要了解我们数据的类型以及结构,接着在整个项目的开始之前我们需要依据我们已有的数据设计我们需要的数据库,导入数据。整个项目的MySql文件我已经发布在了上面,需要自取,直接导入即可。有了数据之后我们就可以对我们项目的框架进行搭建,使我们的项目有一个雏形。另外,文中代码我粘贴图片为了使大家有一个概念的认识,具体代码实现请参考上面我分享的代码。那么下面进入第二篇的学习!
一、SPU与SKU的概念
1.1 SPU
SPU=Standard Product Unit(标准产品单位)
SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以成为一个SPU。例如:iphone12就是一个SPU,与商家、颜色、款式和套餐都无关
1.2 SKU
SKU=Stock Keeping Unit(库存量单位)
SKU即库存进入计量的单位,可以是以件、盒、托盘等为单位。SKU是物理上不可分割的最小存货单元。在使用时要根据不同业态,不用管理模式来处理。在服装、鞋类商品中使用最多最普遍。例如:纺织品中一个SKU通常表示:规格、颜色和款式
二、数据库设计
2.1 商品模块表
2.2 购物车模块表
2.3 订单信息模块表
三、项目框架搭建
3.1 创建项目
输入以下命令创建Django项目3.2 创建应用
进入项目目录创建所需要的应用
3.3 完善目录结构
创建所需要的文件夹3.4 配置项目下的settings.py
因为所有的应用都保存在apps文件夹中,所以首先配置路径为apps注册应用
配置模板(Html)路径
配置数据库
①:首先设置项目下的settings.py中的MySql配置
②:然后配置项目中的__init__.py
本地化
配置static(静态文件)路径
配置富文本编辑器
①:首先注册富文本编辑器
②:然后配置富文本编辑器
③:然后在项目中的urls.py中配置富文本编辑器
3.5 配置项目下的urls.py
配置相关模块的路由3.6 配置应用下的urls.py
注意这里不用手动写,直接复制即可3.7 配置应用下的models.py
注意这里不用手动写,直接复制即可3.8 创建模型抽象基类
在一开始创建的db文件夹中创建base_model.py,写入如下内容3.9 指定Django认证系统使用的模型类
在项目中的settings.py中配置3.10 生成数据库文件
输入以下命令生成数据库文件3.11 生成数据库迁移文件
输入以下命令生成数据库迁移文件3.12 启动服务测试
输入以下命令启动服务,测试项目搭建是否成功3.13 Web端访问项目
访问8080端口进入Django项目首页,如果没有其他报错,项目骨架已经搭建完毕!四、常见问题解答
4.1 项目在部署时报错
具体错误Django2.0以后的版本在部署时报错:django.core.exceptions.ImproperlyConfigured:Passing a 3-tuple to include()……错误原因
这是由于下面的urls.py中的路由配置写法在Django2.0以后的版本不支持
解决方法
对于应用中自定义urls.py文件的引用还是需要include()
4.2 项目路由配置错误
具体错误Django2.1路由配置错误:Specifying a namespace in include() without providing an app_name is not supported
错误原因
include()中不仅要提供名称空间还需要提供app_name,include()是一个包含模式列表和app_name的2元组解决方法
在include()中加入app_name参数,我的app_name参数为"apps"
4.3 生成数据库文件报错
具体错误Django:报错raise MigrationSchemaMissing(“Unable to create the django_migrations table (%s)” % exc)错误原因
Django2.1不再支持Mysql5.5,必须5.6版本以上解决方法
①:方法一:Django降级到2.0:pip install Django==2.0.0 -i /simple
②:方法二:MySql升级
4.4 生成数据库迁移文件错误
具体错误django.db.migrations.exceptions.NodeNotFoundError错误原因
错误原因未知,可能是多台电脑修改的原因解决方法
①:卸载Django:pip uninstall diango
②:删除/Lib/site-packages中django的相关文件夹(mac系统的具体目录:usr/local/lib/python3/)
③:删除项目下所有的.pyc文件
④:删除项目下所有的pycache文件夹
⑤:删除migrations下的文件,但是保留init.py文件
⑥:重新安装Django:pip install django==x.x.x
⑦:同步数据库:python manage.py migrate
⑧:生成数据库文件:python manage.py makenigrations
⑨:同步数据库:python manage.py migrate
⑩:启动服务:python manage.py runserver
需要注意
在使用解决方法之前最好先备份数据
4.5 启动服务测试报错
具体错误执行python manage.py runserver时报错:ValueError(“Dependency on app with no migrations:%s” % key[0])错误原因
没有生成数据库迁移文件解决方法
生成数据库迁移文件
4.6 编码报错
具体错误在Django框架中偶遇报错:AttributeError:‘str’ object has no attribute ‘decode’错误原因
编码问题导致的报错解决方法
①:方法一:找到python文件下的django文件:Lib->site-packages->django->db->backends->mysql->operations.py,将decode改为encode
②:方法二:找到python文件下的django文件:Lib->site-packages->django->db->backends->mysql->base.py,注释如下两行
总结
这一篇的教程暂时就到这里了,按照我的步骤一步一步操作应该是没有问题的,我基本把能碰到问题都碰到了,按照我提供的解决方法解决即可。这篇我们进行了数据库设计以及项目骨架的搭建,前期准备工作我们已经基本结束了,下一篇开始正式进入后端逻辑代码的编写!