2016年
软 件
2016, V ol. 37, No. 12
作者简介: 夏亚丽(1990-),女,硕士研究生,主要研究方向:嵌入式系统与网络通信。 通讯联系人: 戴志涛,男,教授,主要研究方向:嵌入式系统。
基于Django 的O2O 家庭酒店商务平台
夏亚丽,戴志涛
(北京邮电大学计算机学院,北京 100876)
摘 要: 随着互联网的发展,电子商务模式除了原有的B2B ,B2C ,C2C 商业模式之外,近来一种新型的
消费模式020已快速在市场上发展起来。本文设计和完成了基于Django 的o2o 家庭酒店商务平台,介绍了在PyCharm 开发平台下,利用Django ,MySQL ,Bootstrap ,jQuery 技术开发该商务平台。本文主要讨论了系统所涉及的相关技术,设计的思想,系统各功能模块的设计和相关模块的实现。家庭酒店即普通住户,在满足自己住宿的同时,家里有多余的住宿空间供游客或者出差人员住宿,这在一定程度上为游客及出差人员提供了便利,同时住户也能盈利。家庭酒店突破了原有的酒店模式,创新了互联网时代酒店租住的方式。
关键词: 家庭酒店商务平台;Django ;Python ;O2O
中图分类号: TP311 文献标识码: A DOI :10.3969/j.issn.1003-6970.2016.12.026
本文著录格式:夏亚丽,戴志涛. 基于Django 的O2O 家庭酒店商务平台[J]. 软件,2016,37(12):121-128
O2O Family Hotel Business Platform based on Django
XIA Ya-li, DAI Zhi-tao
(School of Computer Science, Beijing University of Posts and Telecommunications, Beijing 100876)
【Abstract 】: With the development of the Internet, in addition to the original B2B, B2C, C2C e-commerce pattern, a new type of consumption pattern 020 has been developed rapidly in the market. In this paper, we design and complete the o2o Hotel Family business platform based on Django, introduced under the PyCharm development platform, we use the technology Django, MySQL, Bootstrap, jQuery to develop the Family Hotel business platform. In this paper, we mainly discuss the related technologies, design ideas, the design and implementation of each function module of the system. Family Hotel is that the common households not only have their own accommodation, but also at the same time have extra accommodation space for tourists or businessman to live, which at a certain extent provides convenience to the tourists and businessmen, and at the same time, households can get profits from renting house to others. Family Ho-tel broke through the original hotel model, creating the new type of hotel renting in the internet era. 【Key words 】: Family hotel business platform; Django; Python; O2O
0 引言
随着信息科技的不断发展,人们的生活节奏也不断加快,越来越多人通过旅游放松自己,国内游客在外出旅游的时候多数选择酒店住宿,但是更多的时候游客希望可以深入的了解当地的风土人情,如果能够借宿到原驻居民家里,游客在休闲度假的过程中就能够亲身的体会当地的民族文化及生活方式;尤其对
于国外游客,能更加真切的体会到当地的民族特及生活习惯。而且在平时工作的过程中,对于出差比较平凡的人,普遍有这样一种体会,自
己到的酒店在地理位置上不能够满足自己的需求,如果有更多的选择,对他们来说也会更好。
Django 是用python 语言编写,基于MVC 设计模式的web 开发框架。它可以使web 开发工作简捷而又高效。使用Django 框架开发互联网应用,开发者能够以最小的代价构建维护高质量的web 应用[1]。
基于以上几点,本文提出了一种基于Django 的o2o 家庭酒店商务平台。本文利用O2O 平台构建的家庭酒店网站,是一个介于游客与房东之间的一个平台,游客可以选择异于传统酒店的房屋,而居民也能把自己闲置的房屋放在网站上出租,实现双赢
第37卷 第12期 软 件
122
《软件》杂志欢迎推荐投稿:cosoft@vip.163
的局面[2]。
1 家庭酒店商务平台的挑战与机遇
1.1 家庭酒店商务平台的挑战
其实家庭酒店对于国外来讲已经不算是什么新鲜词了,国外早就有类似这样的网站,并且已经得到了广大用户的认可,最有名的就是美国的Airbnb 短租民宿网站。但是在中国,虽然也有一些类似的家庭短租网站,但并没有得到广大用户的认可,其中的原因跟中国的文化以及市场有着很大的联系。从运营的角度讲,家庭酒店首先面临的挑战就是安全与信任,因为在国外,每个人都有完善的信用体系,网站可以用这个方式减少安全与信任问题,但是在国内,我们并没有建立个人信用体系,所以安全和信任是我们整个平台的一个难题,加之类似网约车等负面新闻的爆出,让用户对家庭酒店更加缺乏安全感。从房源和用户的角度讲,由于近两年中国房价涨幅特别大,尤其在北京,上海,深圳等一线城市,许多年轻人都买不起房子,大家都是合租的,加之大城市的人又非常密集,所以房源紧张也是在所难免。所以对于家庭酒店的推行来说还是非常有压力和挑战的。
1.2 家庭酒店商务平台的机遇
家庭酒店就像现在国内的网约车一样,虽然前期可能会有很多的问题,但是随着国家政策的制定和人们生活消费水平的提升,肯定也会是一个趋势,加之人们的生活水平越来越高,外出旅游已经是一个趋势,家庭酒店对外出旅游的人来说是一个很好的选择,能够更加深入的了解到当地的风土人情,获得更多的旅游资讯。所以相信不久的将来,这个领域肯定也会发展起来。
2 相关技术介绍
2.1 Django 框架介绍
Django 是Python 最著名的Web 框架,有很多知名的网站都用它来开发。因为它有很多的优点,免费开源,敏捷开发,类似mvc 的架构。为什么说类似mvc 呢?是因为Django 采用的是mtv 的架构,即模型(Model ),模版(Template )和视图(View )。这里的Model 与MVC 中的Model 相同,Templates 和View 加起来相当于mvc 中的View ,而mvc 中的Controller 由Django 的URLconf 单独实现[3][4]。
基于这样的设计,Django 有如下核心组件:
(1)对象关系映射(ORM ,object-relational mapping ) ORM 将关系型数据库中的数据映射为程序中的对象,在处理数据时对于不同的数据库我们也不需要写不同的SQL 语句,只要用Python 函数就可以处理。虽然Django 为你提供了一个简单易用的数据库API ,但如果你喜欢用原始的SQL 语句,一样可以使用。
(2)自动化的后台管理界面
这是Django 自带的后台管理界面,它可以灵活的管理网站数据。
(3)表单处理
这是Django 的一个特性,可以从数据模型直接生成相应的表单,同时自带对表单的有效性检验。
(4)模版系统
Django 模版系统含有很多内置的tags 和filters ,可以直接使用,同时Django 模版具有继承性,对于相同的页面内容只需要写一个html 页面就行。
(5)URLconf
URLconf 相当于mvc 中的Controller ,我们可以自己设计URL ,URLconf 根据正则表达式来匹配相应的URL ,再调用相应的处理函数。所以,我们可以根据自己的爱好设计URL ,而且当URL 改变时,不必修改对应的视图处理函数[5]。
2.2 MySQL
MySQL 数据库是基于Linux 操作系统开发出来的数据库,MySQL 数据库因其体积小、速度快、并且是开放源码的免费数据库而受到中小企业的欢迎。MySQL 有很多优点,它是用C 和C++编写的,具有可移植性;为多种编程语言提供了API ,包括Python 在内;支持多线程,可以充分的利用CPU 的资源;支持windows ,Linux ,Mac 等多重操作系统。总之MySQL 数据库基本满足了本项目对于数据库的需求,加之又是免费开源的,所以用它是再合适不过的[6]。
2.3 jQuery
jQuery 是一个快速、简洁的JavaScript 框架,其设计的宗旨是写最少的代码做更多的事情。jQuery 具有高效灵活的css 选择器,能够快速获取文档元素;可对CSS 选择器进行扩展,拥有便捷的插件扩展机制和丰富的插件;可以提供漂亮的页面动态效果;增强的事件处理;创建ajax 无刷新页面等特性。 2.4 Bootstrap
Bootstrap 是目前最流行的前端框架之一,它由
夏亚丽等:基于Django 的O2O 家庭酒店商务平台
123
《软件》杂志欢迎推荐投稿:cosoft@vip.163
twitter 的两位工程师创建,基于html ,css ,less 前端开发库,提供了很多javascript 和css 的效果,内置了非常多的样式,可以使前端开发工程师快速构建一个完整的网页。Bootstrap 具有以下吸引人们的特点:(1)强有力的css 和jquery 插件(2)多种多样的预定义样式表(3)灵活的响应式删格系统。总之Bootstrap 是一个非常灵活易用的前端框架,利用以上特点,再加上css ,javascript ,jquery 选择器就可以实现非常好看的效果,有效的提高了网站的开发速度。
3 系统整体架构
家庭酒店商务平台主要划分为数据模型层,视
图层和控制层。
数据模型层:建立对象和数据库表的一一映射关系,实现数据表基本的增删改查操作。
视图层:Django 中的视图由view 和template 来实现,主要负责显示平台的用户界面。
控制层:控制层由Django 的URLconf 实现,主要负责平台内部的业务逻辑实现。
4 系统功能设计
django网站4.1 系统结构
本系统是典型的B/S 架构,分为三层:Frontend (前端),backend (后端),Database (数据库)[7],系统结构图如下图1所示:
图1 系统结构图
Fig.1 System Structure
Frontend (前端):用户通过浏览器访问网站进行酒店预览等操作。所以前端是基于http ,通过HTML ,Javascript 和CSS 的组合呈现网页,当然我们会用到前端的一些模版来快速构建前端页面,像bootstrap 等。
backend (后端):本系统是面向多用户的系统,首先要考虑的就是在多用户高并发的情况下的运行稳定性,因此我们考虑采用Nginx 服务器来做负载均衡,同时启动多个服务端,将其挂到Nginx 上,当客户端的请求过来时,首先请求的是Nginx 服务器,Nginx 通过自己的数据分发策略,随机的选在一个server ,转发客户端请求。对于不同的http 请求处理方式也不同,如果是动态的http 请求,Nginx 就把请求交给uWSGI 处理;如果是静态的请求,就交给后端的Nginx Web 服务器来处理。uWSGI 作为Ngin
x 与Django 的中间件,主要对http 请求进行解
析,然后交给Django 来处理。
Database (数据库):前面提到Django 的特性之一是它的ORM (对象数据映射),通过ORM 方式控制底端的MySQL 数据库[8]。
4.2 系统用户设计
家庭酒店商务平台的用户可以分为普通用户和管理员用户两类,其中普通用户又可以细分为房客和房东。 4.2.1 普通用户
普通用户可以通过邮箱或者电话在该网站进行注册,注册完成后用户登录网站可以进行相关的操作。如果用户是房客的话可能会浏览网站的酒店,查看酒店的详细信息以及进行后续的预订等操作。如果用户想出租自己的房源,成为房东的话,他可以点击增加房源,然后填写房源相关的信息,最后添加成功。这些操作都可以在个人中心中查看。
第37卷 第12期 软 件
124
《软件》杂志欢迎推荐投稿:cosoft@vip.163
4.2.2 管理员用户
管理员用户包括了用户管理,消息管理,酒店管理等操作。
4.3 系统功能模块设计
系统功能模块设计如下图2所示。
下面从用户方面介绍各个模块的功能作用: (1)普通用户包括了房东和房客两类用户,其中房东的个人中心除了有自己的房东中心,也包括
房客中心,因为每一个房东也可能在某一时间充当房客的角。房东中心模块包括了订单管理,消息中心,我的评论,房源信息,收益中心,个人资料等子模块。房客中心模块包括我的订单,消息中心,我的评论,个人资料等子模块。
订单管理主要是房东对自己所有的酒店订单的管理,可以查看所有订单,确认订单等。
消息中心主要是管理房客和房东的消息对话。
图2 功能模块设计图 Fig.2 Function Module Design
我的评论主要是房东对房客的评论和房客对酒店整个环境及房东的评论。
房源信息主要是房东添加的所有在线租住的酒店的各种详细信息。
收益中心是房东管理自己所获得的房客支付的酒店的费用。
个人资料主要是管理自己的所有个人信息,包括电话,邮箱,身份证等私人信息。
(2)管理员用户包括了用户管理,消息管理和酒店管理。
用户管理模块主要是管理员对用户信息的维护,主要包括对用户的增删改查等操作。
消息管理模块主要是当有其它用户发来消息时,用户可以查看回复。
酒店管理模块主要是管理员对酒店信息的维护,包括对酒店的增删改查操作。
4.4 数据库设计
系统后台采用mysql 数据库,首先需要下载安装MySqldb 类库,然后修改settings.py 配置数据库属性,通过在项目目录下执行python manage.py dbshell 命令来判断数据库是否连接成功。针对本项目核心的表有10张,数据库设计及具体表结构如下图3所示。
根据数据库表结构创建对应的model ,然后修改settings.py 的配置来安装模型,通过python manage.py validate 检查模型的语法和逻辑是否正确,如果没有出现错误则执行python manage.py syncdb 创建数据表。
说明:避免数据之间的删除操作相互影响,在数据库设计时没有强制添加外键约束,只是逻辑上相互关联。为了避免数据的丢失,尽量采用逻辑删除,而非物理删除。
夏亚丽等:基于Django 的O2O 家庭酒店商务平台
125
《软件》杂志欢迎推荐投稿:
cosoft@vip.163
图3 数据库设计图 Fig.3 Database Design
4.5 界面设计
对于一个网站来说,前端界面的显示非常重要,因为这是离用户最近的模块,它的设计直接影响用户体验的好坏。本文采用的Django 框架自带了表单样式,但是考虑到界面的美化效果,我们会将系统所有的表单在html 页面中重写,结合前端技术html5,css ,js 等给用户呈现动态交互的前端界面。Web 性能也是前端设计考虑的一个重点,我们会在Django 的基础上构建新的web 框架,融入ajax 特性,大家都知道ajax 是异步刷新页面,就是在不刷新整个网页的情况下进行更新数据,这一特性的融入,再利用一些开源库和自己开发的组件可以达到全面提升web 性能的目的,从而可以带给用户较好的用户体验。
5 系统实现
家庭酒店平台采用的是Django 框架,主要包括普通用户和管理员用户两个主要用户角,其中普通用户又细分为房客和房东,在这里由于本文篇幅限制,主要简单介绍一下用户权限控制模块的实现及其消息中心模块的实现。
5.1 用户权限控制
用户权限可以分四部分:未注册用户,房客,房东。不同的身份拥有不同的权限。我们把不同权限下看到的操作叫做目录。然后将所有的目录都录入到目录表(或权限表)中,给他设置相应的目录编码、目录名称、是否为根目录、父目录编码等信息。
未注册用户:当其打开本网站时,判断其是否登录,如果没有登录,则将未注册用户的目录权限查出来,然后根据相应的目录权限把相应的目录名称显示给未注册的用户进行浏览操作。
房客:当未注册用户需要进行提交订单、评论等操作时,提示用户进行登录操作,若用户没有账户则进行注册操作,当该用户注册完成时,成为房客角,将房客所拥有的所有目录权限,分配给该用户即将房客权限添加到该用户权限表中。然后当用户进行登录操作时,查询该用户的用户权限,根据查询出来的权限列表显示相应的目录。
房东:当房客要发布房源信息时,提示该房客填写相应的信息,比如真实姓名、身份证号、支付宝信息等。当这些信息校验通过后,该房客将有房客身份转换为房东身份,同样将在该用户的账户上
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论