python电商系统_python-django电商项目-需求分析架构设计数据库设计_20191115

python-django电商项目需求分析

1.用户模块

1)注册页

注册时校验用户名是否已被注册。

完成用户信息的注册。

给用户的注册邮箱发送邮件,用户点击邮件中的激活链接完成用户账户的激活。

2)登录页

实现用户的登录功能。

3)用户中心

用户中心信息页:显示登录用户的信息,包括用户名、电话和地址,同时页面下方显示出用户最近浏览的商品信息。

用户中心地址页:显示登录用户的默认收件地址,页面下方的表单可以新增用户的收货地址。

用户中心订单页:显示登录用户的订单信息。

4)其他

如果用户已经登录,页面顶部显示登录用户的信息。

所以这个模块有5个页面

注册页

登录页

用户中心-信息页

用户中心-地址页

用户中心-订单页

2.商品相关

1)首页

动态指定首页轮播商品信息。

动态指定首页活动信息。

动态获取商品的种类信息并显示。

动态指定首页显示的每个种类的商品(包括图片商品和文字商品)。

点击某一个商品时跳转到商品的详情页面。

2)商品详情页

显示出某个商品的详情信息。

页面的左下方显示出该种类商品的2个新品信息。

3)商品列表页

显示出某一个种类商品的列表数据,分页显示并支持按照默认、价格、和人气进行排序。

页面的左下方显示出该种类商品的2个新品信息。

4)其他

通过页面搜索框搜索商品信息。

所以这个模块有四个页面:

首页

商品详情页

商品列表页

搜索结果页

3.购物车相关

列表页和详情页将商品添加到购物车。

用户登录后,首页,详情页,列表页显示登录用户购物车中商品的数目。

购物车页面:对用户购物车中商品的操作。如选择某件商品,增加或减少购物车中商品的数目。

所以这个模块就只有一个页面:

购物车页面

4.订单相关

提交订单页面:显示用户准备购买的商品信息。

点击提交订单完成订单的创建。

用户中心订单页显示用户的订单信息。

点击支付完成订单的支付。

所以这个模块就只有一个页面:

订单页面

####################################################################

架构设计的注意点:

注意1:前后端问题

上面都是讲的前段的内容,但是除此之外还有后台管理的页面,添加商品,管理我网站上面要显示的内容,

实际的公司里面开发项目,django有后台管理的模块,可以管理页面,但是像电商大型的项目,不会使用这个django后台,会专门开发后台管理页面,

那django的后台什么时候用?有一个项目你想要很快的做出来,就可以使用这个django后台先搭起来,

或者一个博客,或者做一个新闻类型的网站,你可以使用它的后台管理页面,

这个项目就是使用的django的后台管理功能,

注意2:数据库使用问题

实际开发中都会使用mysql数据库,这是使用最多的,

但是如果用户量非常大,会把常用的数据,或者是页面放到缓存里面,为什么?比如首页,首页的商品信息是数据库来的,但是展示的商品很长时间才动,

如果访问人非常多,比如1万人就要从数据库查1万次,就太频繁了,所以会把页面放到缓存里面,放到缓存的服务器里面,

而且用户来了之后需要存用户的session信息,如果用户非常大,你要不停的查数据库,所以还需要一个session的服务器,提高它的效率,

使用到的缓存数据库就是Redis数据库,内存型的数据库,这就是最常用的场景,使用Redis数据库,作为我们的缓存服务器,和session服务器,

注意3:异步任务处理问题

除此之外还需要异步的任务处理,比如注册之后,发送给用户一个邮件,这种比较耗时,就需要一个异步的任务处理,使用celery来异步处理这种耗时的任务,

注册之后,交给celery发邮件,不应该用户操作页面,该干什么干什么,就体验很好,

注意4:分布式文件存储问题

除此之外还涉及到商品的图片,对于一个大型的网站,涉及到很多的商品图片,django本身上传图片,它的效率是很低的,

在我们的这个项目中,就不再使用django默认的这个图片上传的处理,我们使用一个分布式文件储存系统,帮助我们存储图片,

这个系统叫fastdfs,这个分布式文件存储系统是一个淘宝的使用的一个系统,后来开源了,后来很多的电商网站就使用这个系统,

######################################################################################

数据库设计

这是非常重要的一环

用户表:ID,用户名,密码,邮箱,激活标识(表示用户是否被激活),权限标识(因为你要把管理员和普通用户放在一张表)

地址表:ID,收件人,收件地址,邮编,联系方式,是否默认(默认收货地址),用户ID(和用户是1对多的)

商品SKU表:ID,名称,简介,价格,单位,库存,销量(不放这也可以计算出来,但是按照人气排序,就是使用销量,可以减少关联的操作,就不用统计了,)

商品详情,图片(还是要记录一张,否则每次都要连表查效率低,这就是以空间换时间),状态(上下架),SPUID,种类ID,

商品SPU表:ID,名称,详情,

商品种类表:ID,种类名称,logo(这是种类前面的小logo),图片(这是种类的展示图片)

商品图片表:ID,图片,SKUID(和商品一对多,一个商品有多个图片)

首页轮播商品表:ID,SKUID(你是轮播的哪一个商品),图片(这是一个大banner),index(可以控制展示的顺序)

首页促销活动表:ID,活动图片,活动的url地址(跳转的可能不是一个商品,而是一个活动地址),index(可以控制展示的顺序)

首页分类商品展示表:ID,SKUID(我要展示哪一个商品),种类ID,index(可以控制展示的顺序),展示标识(比如1是展示成图片,0是展示成标题)

购物车功能:Redis实现购物车功能,并不打算建一个表,因为每次点击加商品和减商品,都要操作数据库,验证库存,这样可以使用Redis缓存,

但是我有疑问,为什么每次都要去校验呢?体验好,不然就是你要在提交的时候才知道库存不足,

至于怎么使用Redis放数据,实现购物车的功能,后续再说,

订单信息表:ID,订单ID,收获地址ID,用户ID(谁下的单),支付方式,商品的总数目(根据运营需求来,加上可以利于分析数据,不加也可以),

总金额(可以不加,但是加上有利于分析数据),运费,支付状态,订单创建时间,

订单商品表:ID,订单ID,SKUID,商品数量,商品价格(因为价格会变动,所以一定要记录),订单和商品是一对多,一个订单可以多个商品,评论

用户浏览历史记录:还是保存在Redis数据库中,

所以设计表的时候有一个套路,就是一旦发现有一对多的关系,就要分成两个表,

表在设计之前是需要仔细斟酌的,不可能今天该,明天该,不会频繁变动,

-------------------------------------------

电商里面SKU与SPU概念

SPU = Standard Product Unit (标准产品单位)

SPU 是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述 了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个 SPU。

例如:iphone7 就是一个 SPU,与商家,与颜色、款式、套餐都无关。

SKU=stock keeping unit(库存量单位)

SKU 即库存进出计量的单位, 可以是以件、盒、托盘等为单位。

SKU 是物理上不可分割的最小存货单元。在使用时要根据不同业态,不同管理模式来处理。 在服装、鞋类商品中使用最多最普遍。

例如:纺织品中一个 SKU 通常表示:规格、颜色、款式。

举例:iPhone7是一个SPU,但是白色iPhone7是一个sku,黑色iPhone7也是一个sku,

######################################################################################

项目框架搭建

我需要自己实现这个项目搭建

1,新建django项目,使用命令行创建没有templates这个文件夹,需要手动创建,

2,一个模块就有一个应用app,所以有四个app,

3,项目配置:app配置,数据库配置,语言时区配置,templates路径配置,static路径配置,

查看Django的版本,可以直接在控制台进入Python解释器,输入print(django.VERSION),或者输入python -m django --version,都可以实现查看Django版本。

D:\AI\dailyfresh>python -m django --version

File——Setting——project:项目名——project interpreter——双击Django,勾选Specify 再右边下拉选需要的版本,最后Install Package就可以了

4,开始url编写对应关系,这个url的地方最好使用反向解析的方式,这样改动路径不用大量更改代码

5,定义一个db/base_model.py的文件,一个数据表的基类,给每一个表增加三个字段,

6,按照一个富文本编辑器,pip install django-tinymce

7,配置文件加上一句:

# 加上这句表里的字段都是一样的,就是不在使用django提供的auth_user表,而且使用自己的,

AUTH_USER_MODEL = 'user.User'

这样基本的项目框架就搭好了,

注意:

在新版本Django2.x中,url的路由表示用path和re_path代替,

模块的导入由django1.x版本的

from django.conf.urls import url,include

变成现在的Django2.x中的

from django.urls import path, re_path, include

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
品 交 易 管 理 系 统 【摘要】本文简要介绍了本品管理系统的开发情况,基本设计思想、系统开发环境及目前的应用情况。 关键词 订单 代理 销售查询 备份 目 录: 第一章 引言 第二章 数据库应用系统开发简介 2.1 数据库 2.2 数据库管理系统 2.3 创建数据库 第三章 应用系统开发工具 3.1 DELPHI简介 3.2 DELPHI数据库访问方法与数据库组件介绍 第四章 品销售管理系统目标分析 4.1 任务分析 4.2 系统目标 第五章 品销售管理系统数据库设计 5.1 常见应用程序数据表 5.2 DELPHI中的数据文件路径管理 第六章 试题库系统应用程序界面设计 6.1 用户登录窗体 6.2 主窗体 6.3 系统设置窗体 6.4 权限管理窗体 6.5 操作员信息设置窗体 6.6 代理进/退货录入窗口 6.7 订单进货数据录入窗口 6.8 代理销售数据查询窗口 6.9 品分布查询窗口 第七章 结束语 致谢 主要参考文献 附录程序清单及注释 一 引 言 随着大学教学改革进一步的深入和大学本科课程建设的逐步完善,对学生掌握每一课程内容程度的考试必须规范化,系统化,科学化,现代化;教学管理必须现代化、规范化。我们知道,传统的出试卷方法是由教师个人组卷,这样往往造成试题难度和知识覆盖面难以把握,不能达到对学生的科学而又全面的考核。针对这一情况,我们研制了计算机类学科试题库与自动组卷系统。一方面,自动组卷系统避免了手工出试卷造成的试卷不规范,不易集中管理;另一方面,避免教师每次考试时手工组卷及平时为学生组织练习时的重复劳动,将教师从简单、重复的环节中解脱出来,以更多的精力投入到教学与科研中去。 高校教务管理工作中一项非常重要的工作就是考试管理工作,每学期各专业考试,从组织出卷到试卷的印制及试卷的管理等工作非常繁琐且工作量很大,这种组织管理方式不仅工作任务繁重而且试卷的标准化程度、难易程度、题量大小等各方面难以控制,难以形成有效的试题库,不利于充分发挥历年来的优秀试题及试卷的作用,给试题和试卷的管理带来很多问题和困难。鉴于这种情况,利用计算机进行试卷的自动生成并逐步积累形成有效的试题库,对试题和试卷的管理将变的高效而便捷,对提高工作效率,使试卷管理逐步走向正规化自动化将起到十分重要的作用。 在试题库的制作方面,通过自动组卷系统对每次考试的实现,可以不断地对试题库的内容进行完善。在每一次组卷时,可以进一步对每题的内容进行分析,发现细微的问题,对试题库的内容作进一步地修改。这样避免了传统出试卷时,考试一次结束一次的缺点。由于试题库的建设具有继承性,规范性,可以不断积累考试经验,丰富试题库的内容。 二 数据库应用系统开发简介 在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。 数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。 数据库技术在计算机软件邻域研究中一直是非常重要的主题,产生于60年代,30多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。并且,近年来,随着World Wide Web(WWW)的猛增及Internet技术的迅速发展,使得数据库技术之时成为最热门技术之一。 §2.1 数据库 数据库由DBMS(数据库管理系统)处理,DBMS则由开发人员和用户通过应用程序直接或间接地使用。它主要包括四个要素:用户数据、元数据、索引和应用元数据。 用户数据: 目前,大多数主流数据库管理系统把用户数据表示为关系。现在把关系看作数据表。表的列包含域或属性,表的行包含对应业务环境中的实体的记录。并非所有的关系都同样符合要求,有些关系比其它关系更结构化一些。 元数据: 数据库是自描述的,这就意味着它自身包含了它的结构的描述,这种结构的描述称作元数据。因为DBMS产品是用来存储和操纵表的,所以大多数产品把元数据以表的形式存储,有时称作系统表。这些系统表存储了数据库中表的情况,指出每一个表中有多少列,那一列是主关键字,每一列的数据类型的描述,它也存储索引、关键字、规则和数据库结构的其他部分。在表中存储元数据不仅对DBMS是有效的,对用户也是方便的,因为他们可以使用与查询用户数据同样的查询工具来查询元数据。本文介绍的SQL语言可以同时用于元数据和用户数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值