django电商项目源码_Python 3——项目开发 实战案例

本文通过一个名为「每日生鲜」的电商项目,详细讲解了Python 3使用Django框架开发电商网站的全过程。内容涵盖项目介绍、网站运行流程、Django的优势、开发环境的搭建、模型类设计、首页、详细页、搜索页的实现,以及用户模块(注册、登录、安全退出、个人信息管理)和购物车模块、订单模块的详细功能。项目采用Django的MVT模式,利用ORM进行数据库操作,并使用虚拟环境管理不同项目依赖。文章末尾提供了相关代码资源获取方式。
摘要由CSDN通过智能技术生成

通过一个电商项目:每日生鲜,来讲解Python项目开发的流程及方法。首先介绍一下Web项目的一些相关知识,然后介绍项目开发的四大模块,即商品模块,用户模块,购物车模块,订单模块。

需要本文代码文件的gz WX GZH“职场精进指南”回复“1”即可

另外,为方便大家办公回复“Excel”领取千个office模板

一、 Web项目相关知识

电子商务平台是运营电子商务的一种Web网站,公司通过网络平台进行商品的展示与销售。使用Python开发Web网站可以使用已有的一些框架,如Django等。下面首先对电子商务项目进行介绍,然后讲述使用Django搭建Web项目开发环境。

1、电商项目介绍

电子商务是以信息网络技术为手段的商务活动,而电子商务网站就是承载这种活动的重要平台。目前的电子商务平台有综合电子商务平台与垂直电子商务平台两种。前者是面向多种产品的运营销售业务的,而后者是针对某一个行业或细分市场深化运营的。垂直电子商务网站旗下商品都是同一类型的产品。本章开发的生鲜电子商务项目实际上是一种垂直电子商务平台,主要运营生鲜类产品。

生鲜电子商务网站主要包含四个功能模块:商品模块、用户模块、购物车模块、订单模块。其中商品模块实现商品的添加、商品列表、商品明细以及商品搜索等;用户模块实现用户的注册、用户登录、安全退出、用户个人信息管理、最近浏览信息管理等;购物车模块实现商品购买、商品修改、商品删除等;订单模块包括下单、显示订单、付款等功能。

电子商务网站开发完成之后,由专业公司进行运营。下面看一下生鲜网站的运行流程。

2、网站的运行流程

电子商务网站是进行商品电子交易网络化平台,大型电子商务平台运营过程非常复杂,进货、商品上线、折扣、出库、订单管理、退换货等都有严格的规范。本章开发的生鲜电子商务网站功能较为简单,这里主要从后台管理、前台浏览购物两个方面来分析一下网站的运行流程,加深对生鲜电商网站功能模块的理解。

1. 后台管理

电子商务运营商根据现有商品库存、商品销售情况,完成进货;根据库存及进货信息修改网站当前商品信息;商品上线;商品下架;调整商品在网站上的显示等等。

当用户提交订单之后,运营商需要根据用户订单信息,完成商品出库、产品配送。

2. 前台功能

前台功能主要是针对用户的。用户可以在网站注册,登录网站,添加个人信息、收货地址,查看最近浏览的商品;用户可以浏览商品,查看商品的详细信息,在网站上搜索商品;用户对感兴趣的商品可以加入购物车,可以修改或删除购物车中的商品;用户能够下单,付款交易,显示订单状态等。

限于篇幅,本章的生鲜电商网站,主要讲解前台功能。

3、Django建立网站的优势

在生鲜电子商务网站设计中,采用Django框架进行网站架构与开发。Django是一个开放源码的Web应用框架,其本身由Python编写。

Django采用改进的MVT设计模式,即Model View Template。其中,Model定义数据库相关的内容,负责与数据库的交互,一般存放在models.py;View是业务逻辑的核心,负责接收请求、获取数据、返回结果,一般存放在views.py。Template是一套模板,负责构造封装要返回的HTML。在MVT模式中,浏览器发送的请求根据urls.py先进行路由,然后由视图View接收,由View提交给Model与数据库进行交互,Model将数据库的结果传给View,由View通知Template对数据结果进行渲染,产生HTML页面,最后View将HTML页面作为响应发送给浏览器。

Django实现了ORM,在Django中操作数据库十分方便。关系数据库中的一行,相当于Model中的一个对象;关系数据库中一个表,相当于一个对象的集合。使用Django,不需要编写SQL语句,首先定义Model类,然后通过迁移构建数据库Schema;在数据库操作时,通过Model类的方法修改Model对象,在后台ORM会生成对应的SQL实现对数据库表的操作。

Django自带数据库,还能通过插件安装第三方数据库。Django包含丰富的插件,几乎提供了网站开发的全套工具。应用Django,能够简便、快速、一站式开发数据库驱动的网站,非常适合于生鲜电子商务网站的开发,这也是本项目采用Django的原因。下面我们来看一下在Python中如何搭建项目开发环境,以及如何安装Django。

4、搭建开发环境

1. 虚拟开发环境

一个项目一般要实现一个相对复杂的功能,可能要用到多个Pyhton模块。在同一台计算机上开发多个项目时,每个项目可能使用不同的Python模块,不同版本的Python,甚至同一模块的不同版本。要保证不同项目都能正确运行,必须要能够在不同的系统配置之间快速准确地切换。因此,有必要为每一个项目为其建立独立的开发环境,为其安装需要的模块。项目做好之后,形成可安装的所有的模块列表,再在环境中再进行安装,上线。这种技术实际上就是虚拟开发环境技术。下面我们看一下如何来设置虚拟开发环境。

(1)安装虚拟环境

在Linux中,使用apt工具或pip工具都可以来安装虚拟环境,二者的安装路径可能会有所不同,下面主要介绍通过apt来安装虚拟环境,安装命令如下:

sudo apt-get install virtualenv

在终端窗口中,输入上述命令,不断回车确认,可以下载安装虚拟环境。为了便于使用虚拟环境命令,还可以安装虚拟环境扩展包,它提供了很多方便的命令,可以帮助我们迅速创建和操作虚拟环境。安装命令是:

sudo apt-get install virtualenvwrapper

在终端窗口中,输入上述命令,不断回车确认,可以下载安装虚拟环境的扩展包。

(2)配置虚拟环境

安装完成之后,对虚拟环境进行配置。首先在进入当前用户的根目录在home目录中,使用mkdir创建目录:./.myvirtualenvs

mkdir ./.myvirtualenvs

这个目录就是我们的虚拟环境主目录,稍后我们就在这个目录里面创建项目的虚拟环境。然后切换当前目录到virtualenvwrapper的安装路径:/usr/share/virtualenvwrapper/,找到virtualenvwrapper.sh文件,这个文件中封装并简化了虚拟环境的操作。每次都需要先运行这个shell文件,才能运行该文件中对应的虚拟环境的命令。为了方便调用,为当前用户配置个性化设置,使得当前用户登录之后能够直接运行virtualenvwarpper中的命令。编辑当前用户目录下的./.bashrc配置文件,添加virtualenvwrapper的初始化配置:

cd
vim ./.bashrc

执行上述命令,打开配置文件,在最后一行加入:

export WORKON_HOME=/home/yong/.myvirualenvs
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

上述第一行用来设置virtualenvwrapper所需的环境变量;第二行表示运行virtualenvwrapper,然后用户可以直接调用在其中定义的函数,用于创建和操作虚拟环境。修改界面如下图所示

3bc70d8ab344465898c243acb7d2c882.png
配置virtualenvwrapper

保存当前的.bashrc之后,可以更新一下当前的shell:

source ./.bashrc

运行成功之后,可以使用virtualenvwrapper开始创建虚拟环境,创建虚拟环境的命令是mkvirtualenv,默认可能是Python2的,需要改成Pyhton3,首先要找到Python3的安装位置:

which python3

以上命令会显示Python3所在的位置,然后可以用Python3来创建虚拟环境:

mkvirtualenv -p /usr/bin/python3 mydjangoweb

建立虚拟环境名称是mydjangoweb。建立虚拟环境后,Python3关联的工具包会复制到虚拟环境对应的子目录中;同时将启动虚拟环境,这时可以看到虚拟环境目录在提示符中出现,创建命令及结果如下图所示:

8a35e80d34da8407b5020c22174ab33c.png
使用virtualenvwrapper创建虚拟环境

进入当前设置的工作目录:.myvirtualenvs,使用tree可以看到创建的虚拟目录mydjangoweb文件夹:

tree ./mydjangoweb

可以看到与Python3、pip等相关工具和包都复制到了当前虚拟环境中。

2. Django安装

Django是Puthon的一个包,可以通过pip工具进行安装。首先打开一个终端窗口,启动上一节建立的虚拟环境:

workon mydjangoweb

在当前的虚拟环境中可以使用pip命令安装Django:

pip install django==1.8.2 

上述命令表示安装Django1.8.2版本,目前这个版本的资源相对丰富一些;如果不加版本号,表示安装最新版。默认的pip源安装速度非常慢,可以在网上搜索一下pip源,比如用清华的匹配源:https//http://pypi.tuna.tsingna.edu.cn/simple进行安装,速度会快很多:

pip install django==1.8.2 -i https//pypi.tuna.tsingna.edu.cn/simple

命令运行界面如下图所示:

51dece46a85604590c2572142653658b.png

安装过程中如果下载或安装失败,可以再次运行命令,重新安装。安装完成之后,在虚拟环境对应的目录mydjangoweb中,能找到Django:

mydjangoweb/lib/python3/site-packages/

如果该目录下有相关的Django文件,说明安装成功;由于是在虚拟环境中安装的,Django命令只能在虚拟环境中使用。使用pip命令,可以查看一下虚拟环境中安装的Django:

pip list

该命令显示当前环境中安装的所有的包和版本信息,可以看到Django1.8.2已经安装了。还可以在Python中测试一下Django:

python
import django
django.VERSION

如果Django安装成功,会看到版本号。

如果要退出当前虚拟环境,用命令deactivate:

deactivate

运行命令后,看到提示符中的mydjangoweb字符没有了。退出虚拟环境之后,在本地环境中进入Python,再次查看Django的版本信息,系统提示找不到django了。可见,在虚拟环境中安装的工具包,不会影响本地的Python的环境。

本文用到的包还有:django-haystack(2.6.1)、django-tinymce(2.4.0)、jieba(0.39)、PyMySQL(0.8.0)、Whoosh(2.7.4)等,需要使用pip在虚拟环境中进行安装。

5、小结

在本节主要介绍了电子商务网站的功能、模块、运行流程,以及电子商务网站的相关开发技术。重点介绍了在linux中搭建电子商务网站项目的Python虚拟开发环境,以及Web框架Django在Python中的下载与安装。

二、商品模块

商品模块主要实现商品的展示、商品信息浏览、商品搜索等。本节主要从商品模型类设计、网站首页、商品列表页、商品详细页、商品搜索页等方面,介绍商品模块的实现。

1、模型类设计

生鲜电子商务项目的框架是基于Django来构建的,因此,我们首先介绍如何使用Django来构建Web项目框架和应用模块;后续模块的构建的,就不在深入讲解了。

1. 使用Django通过终端构建Web项目

Django是一个Web框架,提供了Web项目的基本架构。安装Django之后,可以使用Django来创建Web项目,可以用django-admin.py或django-admin:

django-admin startproject dailyfresh

在终端中运行上述命令,可以创建一个dailyfresh的网站,即一个基于Django的网站。默认情况下,系统帮我们创建了配置文件settings.py、路由文件urls.py、wsgi接口文件wsgi.py、管理文件manage.py等;对于复杂的系统,我们还需要创建一些应用模块,在当前项目下,可以使用manage.py来创建:

python manage.py startapp df_goods

在终端中运行上述命令,会在当前项目下建立了df_goods模块,该模块下默认给我们创建了模型文件models.py、视图文件view.py、模型迁移文件夹migrations等内容。类似地,还可以建立用户模块、购物车模块和订单模块等。

在专业版PyCharm中,新建工程时,可以选择Django项目,然后根据界面配置有关信息可以直接创建一个基于Django框架的项目,在项目的终端中,还可以上述命令的形式向项目中添加应用模块。

在PyCharm中打开我们已经创建好的生鲜电子商务项目,如下图所示:

3fe78968498b07be696a7cba47b299ed.png
生鲜电子商务项目工程

从上图中可以看到,项目的商品模块、用户模块、购物车模块和订单模块分别对应df_goods、df_user、df_cart、df_order应用模块;与项目同名的子文件夹dailyfresh存放项目的配置文件;templates文件夹存放系统的HTML模板文件;static文件夹存放CSS、JS、图片资源等等。下面对项目的主要功能模块的代码实现进行介绍。

2. 商品模型类设计

(1)定义实体类

Django中通过models.py定义了实体类,在df_goods应用模块中,有关与类型信息与商品信息的定义:

#df_goods_models.py
from django.db import models
from tinymce.models import HTMLField
#类型信息
class TypeInfo(models.Model):
    #标题
    ttitle=models.CharField(max_length=20)
    #是否删除
    isdelete=models.BooleanField(default=False)
    def __str__(self):
        return self.ttitle
#商品信息
class GoodsInfo(models.Model):
    #标题
    gtitle=models.CharField(max_length=20)
    #图片
    gpic=models.ImageField(upload_to='goods')
    #价格
    gprice=models.DecimalField(max_digits=5,decimal_places=2)
    #单位
    gunit=models.CharField(max_length=20,default='500g')
    #点击量
    gclick=models.IntegerField()
    #简介
    gdescription=models.CharField(max_length=200)
    #库存
    ginventory=models.IntegerField()
    #详情内容
    gcontent=HTMLField()
    #外键-类别
    gtypeinfo=models.ForeignKey(TypeInfo)
    # 是否删除
    isdelete = models.BooleanField(default=False)
    def __str__(self):
        return self.gtitle

上述代码中,可以看到类型信息定义了title、isdelete两个字段;商品信息定义了gtitle、gpic、gprice、gunit、gclick、gdescription、ginventory、gcontent、gtypeinfo、isdelete等字段,其中gtypeinfo作为外键与类型信息关联。

(2)实体类迁移

实体类定义完成之后,通过配置迁移,实现与数据库表的ORM绑定。在这里采用MySQL数据库,其相关信息在dailyfresh下的settings.py中进行配置࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值