大二下期Django母婴商城实训项目报告

     阅读:24

1、摘要

计算机网络诞生仅有五十多年,但却推动着人类社会以前所未有的速度前进着,并且无时无刻不影响着我们的日常生活。
人们在互联网中看到了商机,促使九十年电子商务的诞生,人们从互联网经济中不断获得了便利,促进了电子商务在中国迅猛
发展。随着网络技术日益成熟,互联网经济的优势也愈发明显。对于商家来说,电子商务成为了降低成本、减少风险的宝藏
,对于日益忙碌的消费者来说也是能提供更多便利的一种选择。所以,开发一个网上商城是很有必要的。
Python语言是一种完全面向对象是解释型语言,具有语法简单、易学易读、可以跨平台使用,运行速度快等优点。
Django作为Python最受欢迎的Web框架之一,被广泛应用于网站的快速开发,具有全自动的管理后台,能够实现动态配置url,提供了便于操作的数据库API,模板系统也具有强大的功能。基于以上优点,本文基于Python技术,采用Django框架,开发了网上商城系统。
其中,网上商城的功能模块分为前台和后台,前台运用了Bootstrap框架,包含了浏览商品、购买商品、搜索商品、订单、购物车等功能模块;后台包含了对用户信息、商品信息、商品类别、商品尺寸、商品标签的管理功能模块。
关键词:网上商城;Python;Django框架;
ABSTRACT:
Computer network was invented just 50 years ago, but it is promoting social to develop at an unprecedented rate and
permeating every aspect of your life. People saw business opportunities from computer network, which leading to the birth of
e-commerce. Then, people achieved convenience constantly from the Internet economy, which leading to the rapid
development of e-commerce. With the increasingly maturing of network technology, the advantages of e-commerce are
more and more obvious. To the merchants, e-commerce is a treasure which can lower the cost and risks. To the customers who are gradually busy, e-commerce is an option that provides convenience. Thus, developing an online mall shopping
system is necessary.
Python is an interpreted language which is fully object-oriented. It has lots of advantages such as easy grammar. Also, it’s
quite easy to read and learn. Python can run fast at different environments. Django is one of the most popular web
framework of python, which is widely used into developing website quickly. Django has automatic management background.
It can configure URL dynamically. Besides, Django provides convenient APIs for using database and has strong template
system. Based on above advantages, this article is about developing online mall shopping system using Django framework
and based on Pyhton.
Online mall shopping system’s function modules can be divided into foreground and background. Using bootstrap
framework, foreground’s function modules includes many modules such scanning commodity, purchasing commodity,
remarking commodity and express query. Background function modules includes revising users’ information, commodities’
information, advertisements’ information, commodities’ categories, commodities’ tags and issuing advertisement, checking
orders, managing remarks, checking report forms.
Key words:Online mall shopping system;Python;Django framework;

2、系统开发的工具与相关技术

1.1、JetBrains Pycharm

Python有多个开发工具,如Pycharm、Vim、Sublime Text、Emacs等,这些工具可以大大提高Python的开发效率。
其中,Pycharm是目前使用最多的Python开发工具之一,具有强大的功能。首先,Pycharm界面简洁、操作便捷。其次,Pycharm是属于一站式解决方案型的IDE,不需要太多的操作,就能实现许多基本功能,并且很好地整合,是一款非常适合用于开发Python项目的工具。
Pycharm由JetBrains开发,JetBrains是一家捷克的软件开发公司,开发的产品相当丰富,其中最著名的产品是Java编程所用的集成开发环境IntelliJ IDEA,PyCharm也是其众多产品之中为人所熟知的一个。Pycharm具有一般的集成开发环境所必需的功能,例如,调试功能、语法高亮功能、代码提示功能、错误检测和加快修复功能。除此之外,为了更好地应用于Django开发,Pycharm还提供了一些很棒的功能,比如支持Google App引擎以及IronPython。

1.2、Python

1.2.1、Python概述

Python语言是由荷兰人Guido van Rossum,于1989年开发出来的一个脚本语言。创始人最初的设想是开发一种语言用来作为ABC语言的继承,同时又能克服了ABC语言非开放的弊端,于是Python就此诞生。
虽然Python在国内的应用范围不广,但是在许多欧美国家Python作为一种流行的编程语言被广泛地使用。例如,谷歌在很多项目中用Python作为网络应用的后端开发工具,雅虎、Youtube等网站在某些功能上也使用到Python。除此之外,Python还可以应用于大型网络游戏和动画制作。并且,在Unix平台中也是配置了Python的语言环境[1]。国内现在也有一些网站的开发用到Python,例如豆瓣网、果壳网。
由于Python的设计强调所见即所得,因此它的语法具有优雅、明确、易读、易学的特点。举一个简单的例子:在C或Java环境要做简单的输出,必须将其写在main函数中,而在Python中只需要直接给出输出语句,就能输出字符串了。Python的缩进规则使得其具有很强的可读性,也使代码更加美观。[2]另外,Python的另一特点是冒号和缩进的使用。Python不使用花括号
来作为代码块的区分,取而代之使用冒号和缩进。Python对缩进的规定也是比较严格的,包含错误缩进的代码连编译都无法通过。
Python是一种解释性脚本语言,能够应用于各种平台的大规模的软件开发;它是一种完全面向对象的语言,支持类的继承、重载、派生;Python拥有一个强大的标准库,也提供了许多高质量的第三方库,使得功能更加完善;Python可以跨平台使用,因为它是一种开源语言,经过修改可以移植到不同的平台上;Python被称为“胶水语言”,可以很方便地用C或C++来对
Python的功能进行扩充。

1.2.2、Python的应用

Python是一种开源语言,能够跨平台应用。除Python,Java也具有这样的特点,但是,当它们应用于Web开发和网络游戏中时,Python的优势就更明显了。
在国内网站中,豆瓣就是Python成熟运用于Web开发的成功案例。豆瓣是纯Python进行开发的,从网站架构到其中许多功能模块的开发,均采用的是Python编程语言[3]。
以往,网游基本都使用C/C++开发,如今几乎被Python取代了,逐渐成为了网游的主流开发语言。Python诞生后,人们发现它的抽象能力比LUA更胜一筹[2],而且在描述游戏业务逻辑方面也只需要少量的代码。总之,Python用于游戏开发,既方便,又能拥有不错的性能。

1.3、Django框架

1.3.1、Django概述

Django是使用Python语言编写的一个开源的Web开发框架,是最受欢迎的Python框架之一。最初是用来建立新闻站点,现在已经被广泛应用于Web应用的快速开发。
它遵循了MVC模式,但在MVC模式基础上也做出了独有的改变。Django框架的设计强调了代码的复用能力。Django使用起来简单顺手,因为它把许多常用的功能封装成许多“插件”,可以让使用者在开发过程中任意调用,十分方便。不仅如此,Django允许用户自己开发第三方插件,这使得Django的可扩展性非常高。
国内多数网站使用Java的J2EE架构进行开发,与之比较,Django框架使用起来更加快速、实效。而与微软的.NET框架比较,Django价格低廉,能跨平台,通用性强的特点更加明显。

1.3.2、Django的优点

一、拥有全自动的管理后台

由于大量产品信息需要管理,所以管理界面对于一个购物系统来说是至关重要的。而用Django框架来开发后台管理功能是非常方便的,因为Django具有自动生成管理界面的功能,只要少量的代码就能形成一个完整后台管理界面。当然,也可以对Django实现自动生成管理界面的功能模块进行扩充。

二、强大数据库功能Django

提供的数据库API易于操作,而不需要使用太多的SQL语句。并且可以支持多种数据库,配置数据库的操作也十分简单。

三、url动态配置

使用正则式来匹配url,简化代码。

四、强大的模板系统

模板系统可以扩展,而且模板系统实现了样式设计和功能实现的分开,方便管理。

五、表单处理

只需要少量的代码,就可以根据已经定义的模型生成各种表单。

六、强大的缓存机构

可以缓存多种内容,从视图和模板的一部分到整个网站。

七、国际化

Django支持多种语言,语言切换也比较简单。

1.3.3、Django的开发流程

  • Django建站快速、简单,下面简单介绍一下Django的建站流程:
    第一步:使用命令创建一个工程:django-admin startproject 项目名。
    第二步:使用命令创建一个应用:manage.py startpapp 应用名。
    第三步:为应用修改settings文件:在settings.py中将创建的应用加入,格式如:’应用名’。
    第四步:配置数据库:在settings.py中修改DATABASES中的代码:
    ‘ENGINE’:’django.db.backends.mysql’
    ‘USER’:’root’
    ‘HOST’:’localhost’
    第五步:创建ModelView模板
    第六步:使用更新数据库:manage.py syncdb。
    第七步:添加url映射:修改urls.py文件:
    urlpatterns = [
    path(‘admin/’, admin.site.urls),
    ]

1.4、Mysql数据库

Django作为最优秀的Python框架之一,它能够适配多种目前流行的数据库,如PostgreSQLSQLite3MySQLOracle,本系统将选用MySQL作为网站的数据库。
MySQL是由Oracle公司发行的关系型数据库。关系型数据库的原理在于,不用将全部数据存放在一起,而是把它们根据各自不同的逻辑意义存储在不同的数据表中,最后通过主外键形成各数据表的依赖关系。关系型数据库的建立过程并不复杂,而且实现编程接口也比较简单。
MySQL适用于多种系统平台。开发者在进行选择时,应该综合考虑访问数据库的流量、请求访问的响应时间、以及安全等级等因素。因为具有轻量、快速、价格低廉、性能卓越的特点,MySQL十分适合作为中小型网站的数据库。另外,MySQL还具有可移植性强、适用于多种语言环境、查询效率高、灵活性强等特点。
考虑到网上商城的访问流量、数据量、操作复杂度和成本,所以采用MySQL作为本系统的数据库管理系统。

3、网上商城的需求分析

2.1、功能需求分析

本项目设计的主要内容是开发一个网上商城。通过分析,使用网站的用户可以分为管理员和客户两种,他们拥有各自不同的权限。其中管理员可以进行如下操作:可以管理客户信息,可以对商品的基本信息、类别、品牌、尺寸、标签进行增加、删除、修改等操作,查看和管理用户订单。客户可执行的操作有:登录和注册,浏览商品信息,按分类查询商品,查看最热商品,购买商品,订单查询,购物车。要求使用Django开发前台和后台,采用Mysql数据库进行数据存储。

2.2、系统功能结构图

网上商城分为客户管理员两大模块功能。客户的功能有:浏览商品、按分类搜索商品、查看最热商品、购买商品、订单查询、购物车。
管理员的功能有:商品管理、订单管理;商品管理包括增加商品、修改商品信息、删除商品;订单管理包括查看用户订单、修改订单状态系统整体功能结构图如下图所示。

  • 前台管理:
    在这里插入图片描述
  • 后台管理:
    在这里插入图片描述

2.3、系统功能模块设计

2.3.1、具体功能模块

按照本项目的需求分析,可以将系统使用者分为管理员和客户两种客户,他们具有各自不同的功能,具体功能模块如下:

  • 管理员模块功能如下:
    商品管理:管理员可以管理商品的信息,包括对商品信息的增加、删除、修改。
    订单管理:管理员可以查看用户订单。
  • 客户模块功能如下:
    浏览商品:客户可以在首页直接浏览最新商品。
    按分类搜索商品:客户可以根据商品的不同分类方式查看商品。
    查看最热商品:客户可以在最热商品一栏看见销量最高的商品。
    购买商品:客户可以将商品加入购物车,并结算生成相应的订单。
    订单查询:客户可以根据自己的购物车查询购买商品信息。

2.3.2、管理员系统管理流程图

项目成功运行后,在浏览器输入http://127.0.0.1:8000/admin/进入后台管理界面。
管理员进入登录页,,输入自行创建的admin后台管理用户名及密码,在这里我的用户名是admin,密码是123456,系统检查用户名及密码是否正确,若不正确提示错误并重新输入用户名或密码,若正确话则成功登录;管理员登录后可以对商品的基本信息、类别、品牌、尺寸、标签进行增、删、改等操作,查看和管理用户订单,如下图:
在这里插入图片描述
在这里插入图片描述

2.4、数据库设计

本网站的实现一共需要21张数据表,如图所示:
在这里插入图片描述

4、项目详细设计

4.1、搭配开发环境

我们将项目命名为babies,在Windows的cmd窗口输入Django的项目创建指令:

  • 创建项目
  • django-admin startproject babies
  • 将路径切换到项目babies
  • cd babies
  • 创建项目应用(APP)index、commodity和shopper
  • python manage.py startapp index
  • python manage.py startapp commodity
  • python manage.py startapp shopper
    打开项目babies,分别创建文件夹media、patatic和templates,整个项目结构如图:
    在这里插入图片描述

4.2、项目的功能配置

在Django的配置文件settings.py添加我们新增的项目应用(App)。在App列表INSTALLED_APPS分别添加index、commodity和shopper,添加信息如下:
在这里插入图片描述

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'index',
    'commodity',
    'shopper',
]

4.3、设置模板信息

在配置文件settings.py的配置属性TEMPLATES添加文件夹templates,配置信息如下:
在这里插入图片描述

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

4.4、添加中间件

在项目的MIDDLEWARE中添加LocaleMiddleware中间件,使得Django的内置功能支持中文显示,代码如下:
在这里插入图片描述

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',  # 添加中间件LocaleMiddleware
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

4.5、配置数据库

打开命名提示符窗口并输入安装指令pip install mysqlclient,等待模板安装完成即可。
在项目的配置文件settings.py中配置MySQL数据库链接信息,代码如下:
在这里插入图片描述

在本地的MySQL数据库创建数据库babies,接着在PaCharm的Terminal界面输入python manage.py migrate来创建Django内置功能的数据表。查看数据库如图:
在这里插入图片描述

在命令符窗口输入pip install pymysql指令等待安装完成。
在babies文件夹的__init__.py中设置数据库连接模块,如下:
在这里插入图片描述

4.6、配置静态资源和媒体资源

  • 静态资源在settings.py中设置,如图:
    在这里插入图片描述

  • 媒体资源,如图:
    在这里插入图片描述

打开babies文件夹的urls.py文件添加路由地址,如图:
在这里插入图片描述

4.7、设置路由分发规则

将各个项目应用新建的ulrs.py添加到babies文件夹的urls.py,如图:
在这里插入图片描述

4.8、设置商城路由地址

打开项目应用index的urls.py,如图:
在这里插入图片描述

打开项目应用commodity的urls.py,如图:
在这里插入图片描述

打开项目应用shopper的urls.py,如图:
在这里插入图片描述

4.9、定义商城的数据模型

打开项目应用commodity的models.py文件,如图:
在这里插入图片描述

打开项目应用index的models.py,如图:
在这里插入图片描述

打开项目应用shopper的models.py文件,如图:
在这里插入图片描述

4.9.1、数据迁移创建数据表

在PyCharm的终端输入Django的操作指令python manage.py makemigrations生成迁移文件后再输入指令python manage.py migrate,查看数据库生成的表,如图:
在这里插入图片描述

4.9.2、数据的导入与输出

  • 在PyCharm的终端输入python manage.py dumpdate>date.json将整个项目的数据从数据库里导出并保存- 到date.json文件。
  • 在PyCharm的终端输入python manage.py loaddate date.json将导出的数据文件重新导入数据库

5.1、项目的视图函数

打开项目应用index的views.py,设置如图:
在这里插入图片描述

打开项目应用commodity的views.py,设置如图:
在这里插入图片描述

打开项目应用shopper的views.py,设置如图:
在这里插入图片描述

5.2、商城基础模板设计

从网页静态界面看到,所有网页的顶部都是相同的,包含了商品搜索功能和网站导航,如图所示。

在这里插入图片描述

由于每个网页的顶部都相同,也就说这部分的HTML代码是完全相同的,因此我们可以将这部分代码单独抽取出来并放置在一个文件中,然后在每个网页的代码中调用该文件,这样符合代码重复使用的设计思路,便于日后的维护和管理。
在项目babys的templates 文件夹新建文件base.html,如图所示。
在这里插入图片描述

base.html
在这里插入图片描述

commodity.html
在这里插入图片描述

index.html
在这里插入图片描述

detials.html
在这里插入图片描述

login.html
在这里插入图片描述

shopcart.html
在这里插入图片描述

shopper.html
在这里插入图片描述

5.3、Session的配置与操作

当访问网站时,所有的HTTP请求都经过中间件处理,而中间件 SessionMiddleware会判断当前请求的用户身份是否存在,并根据判断结果执行相应的程序处理。中间件SessionMiddleware相当于HTTP请求接收器,根据请求信息做出相应的调度,而程序的执行则由setings.py的配置属性INSTALLED_APPS的django.contrib.sessions完成,其配置信息如图所示。
在这里插入图片描述

5、项目运行效果截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6、结论及感想

通过这次毕业设计,我获益良多,学会了很多知识,锻炼了自己的动手能力,也培养了一定的自学能力。在这几个月中,我自学了Python基础,学会了如何利用Django框架去搭建一个网站。同时,这次毕业设计使得我对网站的开发过程有了更深刻的理解,培养了我对网站开发的兴趣。
当然,在毕业设计的过程中,我也碰到不少的困难。最初,基于想接触一门新的编程语言这一想法,选了本课题。但在开始学习时还是遇到一些挫折。比如刚开始安装python环境和IDE的时候,因为版本矛盾的问题而花费了很长时间。在学习Django基础时,也有许多概念难以理解。最后,这些问题在自己查阅各种资料以及在老师的耐心指导下,都得到了解决。
经过这次的实践,我深刻体会到自学能力的重要性。在我们走上社会后,不会像在校园里一样,能从老师或者同学那里得到很多帮助,因此,要注重自学能力的培养,学会从书籍或是网络上寻找学习资源,积极主动地摸索解决问题的方法。今后,我将进一步夯实基础,多花时间学习技术,拓宽知识面,提高自己的实践能力。