基于Django的电子商务网站开发(连载9)

简介: 根据3.1节的需求分析,设计了电子商务系统的数据模型,包括用户、地址、商品、单个订单和总订单五个对象。各对象间为一对多关系,并在相关表中设置外键,确保数据的一致性和完整性。通过具体模型定义和字段描述,实现了系统的功能需求。

3.2 数据Model设计

根据第3.1节的需求,进行数据模型的设计,系统关联(ER)图如图3-1所示。

图3-1 电子商务系统的系统关联图(ER)

在这里建立了五个对象,分别是用户(User)、地址(Address)、商品(Goods)、单个订单(Order)和总订单(Orders)。

(1)一个用户对应多个地址,一个地址对应一个用户,所以【用户,地址】是一对多的关系,需要在地址表中建立包含指向用户表的外键。

(2)一个地址对应多个总订单,一个总订单对应一个地址,所以【地址,总订单】是一对多的关系,需要在总订单表中建立包含指向地址表的外键。

(3)一个用户对应多个订单,一个订单对应一个用户,所以【用户,订单】是一对多的关系,需要在订单表中建立包含指向用户表的外键。

(4)一个商品对应多个单个订单,一个单个订单对应一个商品,所以【商品,单个订单】是一对多的关系,需要在单个订单表中建立包含指向商品的外键。

(5)一个总订单对应多个单个订单,一个单个订单对应一个总订单,所以【总订单,单个订单】是一对多的关系,需要在单个订单表中建立包含指向总订单的外键。

根据上述分析,建立如下model.py文件。

from django.db import models # Create your models here.#用户class User(models.Model): username = models.CharField(max_length=50) #用户名 password = models.CharField(max_length=50) #密码 email = models.EmailField() #Email def __str__(self): return self.username #商品class Goods(models.Model): name = models.CharField(max_length=100) #商品名称 price = models.FloatField() #单价 picture = models.FileField(upload_to = './upload/') #图片 desc = models.TextField() #描述 def __str__(self): return self.name #收货地址class Address(models.Model): user = models.ForeignKey(User) #关联用户id address = models.CharField(max_length=50) #地址 phone = models.CharField(max_length=15) #电话 def __str__(self): return self.address #总订单class Orders(models.Model): address = models.ForeignKey(Address) #关联送货地址id create_time = models.DateTimeField(auto_now=True) #创建时间 status = models.BooleanField() #订单状态 def __str__(self): return self.create_time #单个订单class Order(models.Model): order = models.ForeignKey(Orders) #关联总订单id user = models.ForeignKey(User) #关联用户id goods = models.ForeignKey(Goods) #关联商品id count = models.IntegerField() #数量

Goods表中picture使用的是models.FileField(upload_to ='./upload/'),也可以用ImageField,由于goods是后台管理人员操作的,为了提高上传图片的性能所以没有使用ImageField来管理。upload_to = './upload/'表示图片上传后,放入名为upload的路径,upload路径是与goods平行的。这样需要在urls.py中加入。

...url(r'^static/(?P<path>.*)',static.serve,{'document_root':os.path.join(BASE_DIR,'upload')}),…...

这样通过后台上传的图片文件自动存在BASE_DIR\upload\下面,通过来显示相应的图片(注意upload前必须由字符‘/’)

目录
相关文章
|
5天前
|
网络协议 网络安全 数据安全/隐私保护
基于Django的电子商务网站开发(连载4)
本文首先介绍了四种安装Django的方法:使用pip安装、通过tar.gz文件安装、使用whl文件安装以及从GitHub上安装。接着,文章对HTTP协议进行了详细介绍,包括其历史背景、不同版本的特点以及工作原理。特别是在HTTP的工作原理部分,通过对比HTTP与HTTPS的协议栈图,展示了它们在网络中的具体位置及差异。
24 4
基于Django的电子商务网站开发(连载4)
|
5天前
|
存储 安全 数据安全/隐私保护
基于Django的电子商务网站开发(连载7)
HTTP是一种无状态协议,每个请求独立,不保存会话信息,这使得服务器响应更快但需重复传输信息。为解决无状态问题,引入了Cookie和Session技术。Cookie可存储用户登录信息和购物车数据,实现便捷登录和跨页面数据保存;Session则通过服务器保存会话信息,客户端仅存储SessionId,实现更安全的状态管理。这两种方法共同解决了Web应用程序中状态保持的问题。
22 2
基于Django的电子商务网站开发(连载7)
|
5天前
|
存储 前端开发 数据库
基于Django的电子商务网站开发(连载10)
本节介绍了用户信息模块,涵盖用户注册、登录、信息展示及密码修改功能。重点描述了用户注册流程,包括urls.py配置、forms.py中的表单定义及views.py中的处理逻辑。通过详细代码示例展示了如何实现用户信息验证与存储,并提供了注册页面的模板设计。特别强调了使用`request.POST.get`方法以支持后续接口测试。图3-2展示了实际的注册页面效果。
15 2
基于Django的电子商务网站开发(连载10)
|
5天前
|
存储 开发框架 网络安全
基于Django的电子商务网站开发(连载5)
HTTP请求包括八种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT,常用的是GET和POST。请求结构分为请求行、请求头和请求正文。HTTP响应则包含状态码,如200表示成功,404表示未找到,500表示服务器内部错误。响应同样分为响应行、响应头和响应正文。状态码按类别分为1XX(指示信息)、2XX(成功)、3XX(重定向)、4XX(客户端错误)和5XX(服务器错误)。
19 2
基于Django的电子商务网站开发(连载5)
|
5天前
|
SQL 前端开发 Unix
基于Django的电子商务网站开发(连载3)
本文首先介绍了Python的安装选择,建议基于2.X系列进行维护工作,而新项目则选用3.X系列,并提供了官方下载地址及环境配置说明。随后,文章详细阐述了Django框架的特点和设计理念,包括其核心组件、快速开发原则及DRY原则,并简述了Django的工作流程和技术优势。
17 6
|
5天前
|
数据库 数据安全/隐私保护 Python
基于Django的电子商务网站开发(连载8)
本章节详细介绍了电子商务网站的实现,包括用户信息模块(注册、登录、信息展示及密码修改),商品信息模块(维护、分页显示、模糊查询及详情展示),购物车模块(商品显示、添加、删除及数量修改),送货地址模块(显示、添加、修改及删除),订单模块(显示、删除),以及订单支付模块等功能需求和实现细节。
16 4
|
Python
基于Django的电子商务网站开发(连载9)
基于Django的电子商务网站开发(连载9)
66 0
基于Django的电子商务网站开发(连载9)
|
测试技术 Python
基于Django的电子商务网站开发(连载20)
基于Django的电子商务网站开发(连载20)
56 0
基于Django的电子商务网站开发(连载20)
|
测试技术 数据安全/隐私保护 Python
基于Django的电子商务网站开发(连载18)
基于Django的电子商务网站开发(连载18)
69 0
基于Django的电子商务网站开发(连载18)
|
XML 测试技术 数据库
基于Django的电子商务网站开发(连载24)
基于Django的电子商务网站开发(连载24)
49 0
基于Django的电子商务网站开发(连载24)