基于django的图书分享系统的设计与实现.docx
- 文档编号:28943152
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:20
- 大小:196.40KB
基于django的图书分享系统的设计与实现.docx
《基于django的图书分享系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于django的图书分享系统的设计与实现.docx(20页珍藏版)》请在冰豆网上搜索。
基于django的图书分享系统的设计与实现
基于Django的图书容分享管理系统的设计与实现
谈鑫
数学与信息学院信息管理与信息系统专业2010级指导老师:
艳梅
摘要:
在互联网日益发达的今天,无论是企业、事业单位、政府机构,还是学校、个人都将网络作为传播、管理信息的重要手段。
面对图书馆数以百万的图书,本文认为,建立一个图书分享有利于同学更快、更轻松的找到想要的书籍。
近年来,基于开源的容管理系统迅速兴起[1],它不仅帮助人们快速建立发布信息的网络平台,而且对的容和资源进行有效的整合和管理。
在这种背景下,本文提出了运用Django框架,以Python为主要开发语言开发快速发布图书容分享的信息管理系统的方案。
从技术、经济、社会三方面分析了可行性,技术方面,采用Django框架、MVC模式、Python语言、MySQL数据库;经济方面,采用开源的“LAMP”软件;社会方面,研发一套图书容分享系统,可以使同学快速找到需要的书籍。
然后创建了应用项目,进行数据库的配置,用models.py具体实现系统的物理数据模型,同时生成了相应的数据表。
在Web设计时,先简述了Django请求响应流程,将HTTP请求通过与预定义的URLconf匹配,转向相应的控制层,调用特定View函数处理。
以基本模板为基础,利用Django特定的模板标记嵌入网页页面中,并添加页面逻辑完成页面设计。
同时利用Django置的管理界面进行数据编辑和数据管理。
整个系统最终完成了:
基于模板的页面和管理页面,及时快速发布图书信息,对图书信息的评级、评论等功能。
关键字:
Django;容管理;
BookssharecontentmanagementsystembasedonDjango
Tanxin
InformationmanagementandinformationsystemofMathematicsandinformationDepartmentGrade2010Instructor:
YangYanmei
Abstract:
Today,Internettechnologyisusedwidelybyenterprises,institutions,school,governmentorindividualsastooltoreleaseandmanageinformation.
Facetomillionsoflibrarybooks,thepaperconsidersthattheestablishmentofabooksharingsitesinfavorofstudentsfasterandeasiertofindthedesiredbook.
Inpastseveralyears,theopencontentmanagementsystemisbooming.Notonlyithelpstorapidlybuildtheplatformofreleasingtheinformation,butalsoitmanageandintegratethecontentsandresourceofthewebsite.Onthisbackground,weproposetouseDjangoframeworktoPythonastheprimarydevelopmentlanguagedevelopedquicklypublishbookcontentsharingsolutionsforinformationmanagementsystem.Therearethreefeasibilityanalysis.Technically,usingDjango,MVC,Python,MySQL.Economically,usingfree,opensourceLAMPsoftware.Society,Developedabookscontentsharingmanagementsystemthatallowsstudentstoquicklyfindtherequiredbooks.Thencreatetheapplicationproject,configurethedatabase,withmodels.pyconcreterealizationofthephysicaldatamodelofthesystem,whilegeneratingthecorrespondingdatasheet.InWebdesign,firstoutlinedDjangorequestresponseprocess,theHTTPrequeststhroughpredefinedURLconfmatch,turnthecorrespondingcontrollayer,callaspecificfunctiontodealView.Basictemplatesasthebasis,SpecificuseDjangotemplatetagsembeddedinWebpages,andaddthepagetocompletethepagedesignlogic.Atthesametime,wetakeadvantageofthebuilt-inDjangoadmininterfacefordataeditinganddatamanagement.
Thefinalcompletionoftheentiresystem:
theweb-basedadministrationpagesandpagetemplates,quickandtimelyreleaseofinformation,informationonbooksratings,reviewsandotherfeatures.
Keywords:
Django;contentmanagement
一、引言
随着计算机技术的发展,尤其是互联网技术和相关企业的兴起,开源软件在操作系统、编译工具链、数据库、WEB服务器、移动操作系统等各个方面已经成为主流。
而且许多企业利用开源软件形成了独特的商业模式。
比如谷歌的Android操作系统,从2007年开源发布第一个版本起,到今天已经发展到4.4版本,占据了智能手机操作系统一半以上的市场份额,谷歌也通过Android操作系统在移动互联网这一新兴行业中占据了领先和主导地位。
再比如在服务器端广泛使用的关系型数据库MySQL,在以开源软件和商业许可并行的模式下,得到了快速发展,并在2008年作价10亿美金由Sun收购(后者又在2009年被Oracle公司以74亿美金的高价收购)。
相反,以前一直和开源软件做斗争的微软公司,却因为无法快速推出适应市场的WindowsPhone操作系统,在移动互联网竞争中处于下风。
为顺应潮流,微软也开始拥抱开源,比如向Samba项目贡献代码,放弃自己研发多年的大数据项目而选择Hadoop为其大数据的核心等。
显然,纵观IT行业这二十多年的发展,开源软件从黑客的理想之国,已经形成了一股推进计算机及相关行业不停进步的巨大力量。
很多人可能尚未意识到,我们使用的电脑中运行有开源软件,手机中运行有开源软件,家里的电视也运行有开源软件,甚至小小的数码产品(如电子相框)中也运行有开源软件,尤其是互联网服务器端软件,几乎全部是开源软件。
毫不夸地说,开源软件已经渗透到了我们日常生活的方方面面。
正是在这样的背景下,本文选择了使用开源的Python语言作为主要开发语言,使用Django框架来完成系统的设计。
从技术可行性来说,本系统对于用户仅需要一台装有浏览器的计算机,即可完成大多数操作,对用户个人电脑本身没有特殊要求,一般个人电脑几个满足要求。
开发软件主要采用目前计算机网页设计流行的“LAMP”,即为Linux、Apache、MySQL、Python,这些用来搭建动态的开源软件,拥有强大的解决方案。
采用Django框架对于图书信息的发布是非常快捷便利的。
用户利用这些开源软件丰富的解决方案可以快速开发系统。
从经济可行性来说,本系统使用开源免费的“LAMP”软件,这些软件与开源软件许可证结合在一起,软件费用的开支几乎为零费用,费用开支主要用于解决Web服务器、数据库服务器和人工研发费用,这些费用是开发维护中不可避免的费用。
从需求可行性来说,由于同类书籍的种类越来越多,如何选择一本好书显得至关重要,本文的研究便是希望设计出一套可以让专家学者分享出相关专业的好书籍的容管理系统。
二、Django技术基础
图书容分享管理系统属于轻量级的管理信息系统,为了减少花费,所以采用快速而免费的Web开发技术。
传统的重量级开发技术ASP.NET和J2EE显然不适合轻量级的快速开发。
故采用基于Python开源的Django框架[2]。
使用Django框架可以使开发者将精力集中在主要的业务流程或核心子系统的实现上,一些基本辅助功能完全可以由Django自动实现,开发者不必浪费过多的精力在辅助功能的实现上,极大程度提高了开发者的效率,减少项目的开发周期。
同时由于Django是免费开源框架,部署时使用的Apache和MySQL也都是免费产品,可以使项目以较低的投资获得较高的回报。
通过使用Django将大量需要管理人员手工做的工作转变为系统自动执行,提高了管理效率,同时通过使用Django的多种有针对的技术手段,可以对工作人员的工作进行有效的约束,使工作人员可以无安全遵守工作流程。
在本文展开讨论具体的应用之前,首先对后文将要用到的Python语言和Django框架技术做简要的介绍,并以此作为后面章节的理论基础。
(一)Python语言
Python是一种解释型的,面向对象的,带有动态语义的高级程序设计语言。
自从GuidovanRossum在20世纪90年代初创造这门语言以来,他的支持者就一直在稳步增加,而且近些年来,社区对他的兴趣也日益浓厚[1].Python是一种通用编程语言,所以Python的特点是可以用于几乎所有的软件开发领域。
在任何地方Python都能成为一个最佳解决方案的一部分[2]。
在得过汉诺威举办的CeBIT2009大会上,Python获得了LinuxNewMedia颁发的最佳开源编程语言奖,以肯定Python一直以来在提升语言功能性和易用性方面做出的贡献[3]。
Python的语法非常简洁,它不使用C/C++/Java等语言惯用的大括号作为划分程序块的标记,也不使用分号作为一个语句的结尾,而是使用空白缩进作为程序段的划分标准,相同级别的代码段必须拥有相同的空白缩进。
如此一来,就强制程序员编写代码时保持良好的代码缩进。
所以用Python编写的程序都具有良好的格式,非常易读,同时帮助程序员节省了敲击无用的大括号和分号所浪费的时间。
Python同时拥有强大的字符串处理能力,支持通用的正则表达式。
由于Web程序会有大量的用户输入,需要经常用到字符串操作,所以优秀的字符串处理能力对于Web程序后端处理是不可或缺的。
Python在这个方面非常适合Web开发,相比传统的PHP,Java以及ASP.NET而言,Python完成同样的字符串处理要求所要编写的代码仅仅是传统技术的1/3甚至更少。
Python还拥有多种实现版本,通常被提及Python实际上是CPython,也就是用C语言实现的Python。
而随着Python越来越受到开发者的欢迎,现在Python已经拥有了Jython,IronPython等其他实现[4]。
其中Jython是Python的Java实现,而IronPython是Python的.NET实现,未来也许会有更多的实现版本,但是仅仅从当前看,Python已经深入到了传统的企业级应用开发领域,这些实现已经为传统应用使用Python进行改进铺平了道路。
当前,Python拥有两个版本分支,分别是2.x版和3.x版。
2.x版的最新版本号是2.7.1,而3.x版的最新版本号是3.3。
3.x版与2.x版是并行更新的,只不过3.x版对2.x版进行了改进,不在兼容2.x版的程序。
2.x版的代码如果想运行在3.x版下,需要使用转换程序进行转换。
由于Python拥有超过20年的历史积累,当前绝大部分Python代码都是基于2.x版,所以下面即将介绍的Django也是基于2.x版Python之上构建的。
(二)Python的Web开发框架
随着互联网的发展,对于Web程序的开发已不仅仅局限于使用ASP.NET、JSP或者PHP等传统开发技术,这类开发技术由于开发周期长,经常需要做重复性的工作,已经不适合快速的Web系统开发。
而以Ruby语言构建的全新的Web开发框架RubyOnRails,为Web应用程序开发提供了极其便捷的途径,近年来的迅速兴起成为了Web开发社区的焦点[5]。
这个框架的最大优点之一就是可以对Web系统进行快速的开发,避免了应用传统技术时需要反复编写重复代码的问题,从而极大程度上减少了Web系统项目的代码量,提高了开发效率。
由于RubyOnRails是构建在Ruby之上的,自然也就使Python社区的开发者有些沮丧。
但Python语言比Ruby语言有着更为悠久的历史,用户遍布全世界的各行各业。
当然Web框架也是多如牛毛,比较知名的有Zope、Plone、Web.py、web2py等。
Django是最近几年才开发出来的基于Python的Web框架,目前版本为1.6。
Django框架作为Python的Web框架长的新生力量,其很多方面借鉴了RubyOnRails的优点,虽然发展历史并不是很长,但是知名度非常高,是当前Python社区中最著名的Web开发框架。
(三)Django框架技术
Django是构建在纯Python语言之的Web开发框架,在国刚开始掀起一股研究热潮。
Python创始人GuidovanRossum曾经在接受采访时说:
“Django是我个人最喜欢的一个,也是我长期选择的框架”[6]。
从中不难看出Django框架在所有基于Python的Web框架中的地位。
从2005年起至今,经过不断的发展,Django框架不仅吸收了RubyOnRails框架的有点,也弥补了一些RubyOnRails框架的不足,从而拥有了自己的特色。
Django以其简洁、快速的特性,吸引着越来越多国开发者的关注和使用,已有不少开发者在CPyUG讨论组上公开了自己使用Django开发的Web应用及源代码[7]。
当前应用Django进行企业级系统开发的还比较少,但并不代表Django不适用于企业级开发。
其同类技术RubyOnRails已经被企业所接受,所以应用Django框架构建企业级系统将有更为广阔的发展空间。
1.MVT架构
Django应用开发遵循MVC模式[8],但是在Django中,大多数人更喜欢称之为MVT架构。
M即Model模型,V即View视图,T即Template模板。
图2-1显示了Django的架构总览。
在传统的MVC模式下,控制器C代表逻辑层,用于实现业务逻辑。
而在Django中,views.py既负责实现业务逻辑,又负责用数据渲染模板文件,下面对模型,视图和模板做简单的介绍。
HTTP请求处理响应
(HTTPHandling)
URL映射
(URLMapping)
应用(Application)
模型
(Model)
视图
(View)
模板
(Template)
对象关系映射
(ORM)
模板引擎
(TemplateEngine)
数据库
(Database)
文件系统
(FileSystem)
图2-1Django架构总览图
模型即数据模型,是Django开发中最先需要建立的。
每当使用Django的“manage.pystartapp[应用名称]”命令新建一个应用时,Django都会自动生成用于存放数据模型定义的文件models.py。
开发者可以在这个文件中利用Python的语法对数据表结构进行定义。
定义完成后,Django可以通过syncdb命令将这些数据模型的定义映射到数据库中,不需要人工编写任何SQL语句去建立数据库和数据表。
使用高度抽象的数据模型还有一个好处就是开发者可以不关心最终部署时使用何种数据库,开发时都可以使用基于文件的Sqlite3数据库。
在部署时开发者只需要应用syncdb命令,将数据模型映射到最终部署的数据库即可。
通过这种方式,可以节省开发者在搭建开发系统时的时间,加快开发效率。
Django的数据模型类封装了很多常用数据库的操作,如查找,创建,更新,删除等。
开发者不需要使用任何SQL代码去操作数据库,只需要调用已经封装好的模型类API即可。
当然,Django也具有让开发者直接运行SQL代码的能力,以便处理一些特殊的需求。
视图在Django中充当控制器的角色,包含有实现业务逻辑的代码。
每当一个新的应用被Django创建时,Django会自动建立用于存放业务逻辑代码的文件,即views.py。
开发者可以通过在url.py文件中关联用户请求与逻辑处理代码实现对特定用户请求的处理。
视图代码可以进行任何Python语言可做的操作,并且可以通过访问数据模型类来获取操作数据库中的数据的能力。
依赖于Python丰富的类库,在逻辑代码中几乎可以做任何事情。
模板用于实现用户界面。
Django的模板实际上是HTML文件嵌了预定义的标记,用于实现一些复杂的逻辑操作,比如循环,比较等。
这些标记基本上包括了所有常用的操作。
Django还为开发者提供了自己定义模板标记的方法,用于更高级的模板开发工作。
相对于模型与视图,模板的实现就比较自由,开发者可以自行在settings.py中指定模板文件的位置。
业务逻辑代码就会自动根据设置去搜索指定路径中的模板文件,并对其渲染输出。
2.Form表单类
表单的开发是Web开发中最基本也是最重要的一部分,Django是实现了一套完整的Form表单类,高度抽象了几乎所有常用的表单域。
开发者可以根据实际需求,派生属于自己的表单类并定义表单域。
通过表单类可以完成HTML表单生成,服务器端用户输入验证以及发生输入错误时的表单重新显示等通用表单任务[9].对于HTML表单生成,Django的表单类提供了多种方法用于生成不同需求的HTML代码,Django对不同的表单域类提供了不同的窗口部件,并且开发者还可以根据实际需要更改默认提供给表单域类的窗口部件,从而生成满足需求的HTML代码。
对于用户输入验证,Django首先会根据不同的表单域类自动生成用于验证数据有效性的代码,同时Django也为开发者提供了自定义验证数据有效性的方法,开发者可以根据实际需求,自定义函数对特定的表单数据进行验证。
3.基于类的通用视图
Web开发中常见的数据操作模式有新建,修改,删除等。
通常传统的Web开发技术都要反复编写代码去实现对不同数据表的增删改操作,一遍又一遍的重复已确定的模式[10]。
Django为了提高开发效率,避免开发时间浪费在重复的模式上,提出了通用视图的概念。
在Django1.3版本之前,Django一直是使用基于函数的通用视图,由于函数不具有继承的特性,所以有时候在应付一些特殊需求时,就没有合适的办法可提供使用,一定程度上限制了通用视图的使用。
Django从1.3版本开始,是实现了基于类的通用视图,如ListView用于显示数据对象列表,DetailView用于显示一个数据对象的细节,也就是一个数据表中一行的所有字段容,CreateView用于生成一个创建数据对象,UpdateView用于更新一个数据对象,DeleteView用于删除一个对象。
通过通用视图,开发者可以直接生成操作指定数据模型的视图类。
这样开发中进行数据的增删改操作时,开发者就可以避免编写大量的重复代码。
而且使用基于类的通用视图还有一个好处就是很多方法都允许被重载,这样开发者就可以在遇到特殊需求时,通过对不同方法的重载来满足需求。
4.自动管理接口
自动管理接口是Django框架的一个主要的特点[11]。
一个后台管理系统通常是一个用于对数据库中数据进行管理的界面。
但是,相对于通用的数据库管理系统却有着很大的区别。
数据库管理软件由于是通用软件,设计上完全是朝着通用的方式设计的,不可能对不同的数据字段提供有个性的操作界面,而且也不允许用户对其进行任何改变。
系统管理员不可能使用数据库管理软件代替系统后台。
传统的ASP.NET、J2EE以及当前流行的RubyOnRails都不具有自动生成系统后台管理界面的功能。
而Django却打破常规,根据用户的数据模型定义,自动生成的管理接口。
通过自动生成的管理系统,可以实现用户的登录退出,权限验证,数据浏览,查询,添加,删除,编辑等功能。
基本上,日常管理中常见的管理操作方法,都已经被自动生成的管理系统实现了。
同时自动生成的管理系统还支持自定义的扩展。
这个扩展包括功能的扩展和界面的扩展。
自动生成的管理接口支持用户编写action对管理的数据对象进行特定的操作,研究人员可以借助管理接口已经实现的数据对象选择操作,对一个或者一组数据进行自定义的操作。
并且管理接口还支持研究人员用自己的模板重载管理接口默认的模板,用以提供符合个性需求的管理界面。
通过自动管理接口的应用,很多系统功能在设计上可以获得极大的简化,研究人员只需要设计好自己的ModelAdmin类即可实现一个具有强大的增加,删除,修改以及查询功能的系统后台。
与同类技术产品相比,可以更为有效的提升开发效率,并且由于自动生成的管理接口已经达到了产品级的质量标准,应用它可以比研究人员自己编写复杂而重复的后台代码拥有更高的质量。
三、系统的设计与实现
系统设计时系统开发过程中核心的一项工程活动,其主要任务是提供一详细的“设计图纸”来指导开发者完成系统的开发过程。
系统实现是软件工程的一个阶段,是系统设计的继续,其主要任务就是一条一条代码地完成软件的开发过程,是实现软件从无到有的过程。
本章论述的是本系统各个功能模块的详细设计。
在设计的时候,将整个系统细分为多个功能模块,从而来给系统的实现提供的设计方案。
同时,本章还通过代码片段来分析和论述了一部分重点功能的实现方法。
(一)系统总体设计
图书容分享管理系统主要承担图书信息的管理工作,其主要工作包括对图书信息的发布、用户验证以及对书籍的评论管理。
在系统设计时,首先讨论了各个功能的数据模型,随后在数据模型的基础上对功能的实现进行了详细的设计,最后讨论了数据库实现及Web设计[12]。
1.容管理相关数据模型设计
根据最初对系统设计的需求,下面将讨论图书容管理以及评论管理数据模型。
图书容主要包括以下容:
标题、作者、发布时间、图书容、分类、评论。
考虑到实际使用中,管理员可能会对某些评论进行限制,所以每条图书信息还应包括评论允许。
同时,用户可能希望为图书评级,所以每一条图书信息还应允许用户进行评级。
根据以上分析,定义图书容的数据模型部分代码如下[13]:
classBookPost(Displayable,Ownable,RichText,AdminThumbMixin):
title=models.CharFi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 django 图书 分享 系统 设计 实现