基于Django的O2O家庭酒店商务平台

2016-02-13 05:58夏亚丽戴志涛
软件 2016年12期
关键词:房东消息数据库

夏亚丽,戴志涛

(北京邮电大学计算机学院,北京 100876)

(School of Computer Science, Beijing University of Posts and Telecommunications, Beijing 100876)

基于Django的O2O家庭酒店商务平台

夏亚丽,戴志涛

(北京邮电大学计算机学院,北京 100876)

随着互联网的发展,电子商务模式除了原有的B2B,B2C,C2C商业模式之外,近来一种新型的消费模式020已快速在市场上发展起来。本文设计和完成了基于Django的o2o家庭酒店商务平台,介绍了在PyCharm开发平台下,利用Django,MySQL,Bootstrap,jQuery技术开发该商务平台。本文主要讨论了系统所涉及的相关技术,设计的思想,系统各功能模块的设计和相关模块的实现。家庭酒店即普通住户,在满足自己住宿的同时,家里有多余的住宿空间供游客或者出差人员住宿,这在一定程度上为游客及出差人员提供了便利,同时住户也能盈利。家庭酒店突破了原有的酒店模式,创新了互联网时代酒店租住的方式。

家庭酒店商务平台;Django;Python;O2O

本文著录格式:夏亚丽,戴志涛. 基于Django的O2O家庭酒店商务平台[J]. 软件,2016,37(12):121-128

(School of Computer Science, Beijing University of Posts and Telecommunications, Beijing 100876)

0 引言

随着信息科技的不断发展,人们的生活节奏也不断加快,越来越多人通过旅游放松自己,国内游客在外出旅游的时候多数选择酒店住宿,但是更多的时候游客希望可以深入的了解当地的风土人情,如果能够借宿到原驻居民家里,游客在休闲度假的过程中就能够亲身的体会当地的民族文化及生活方式;尤其对于国外游客,能更加真切的体会到当地的民族特色及生活习惯。而且在平时工作的过程中,对于出差比较平凡的人,普遍有这样一种体会,自己找到的酒店在地理位置上不能够满足自己的需求,如果有更多的选择,对他们来说也会更好。

Django是用python语言编写,基于MVC设计模式的web开发框架。它可以使web开发工作简捷而又高效。使用Django框架开发互联网应用,开发者能够以最小的代价构建维护高质量的web应用[1]。

基于以上几点,本文提出了一种基于Django的o2o家庭酒店商务平台。本文利用O2O平台构建的家庭酒店网站,是一个介于游客与房东之间的一个平台,游客可以选择异于传统酒店的房屋,而居民也能把自己闲置的房屋放在网站上出租,实现双赢的局面[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是目前最流行的前端框架之一,它由twitter的两位工程师创建,基于html,css,less前端开发库,提供了很多javascript和css的效果,内置了非常多的样式,可以使前端开发工程师快速构建一个完整的网页。Bootstrap具有以下吸引人们的特点:(1)强有力的css和jquery插件(2)多种多样的预定义样式表(3)灵活的响应式删格系统。总之Bootstrap是一个非常灵活易用的前端框架,利用以上特点,再加上css,javascript,jquery选择器就可以实现非常好看的效果,有效的提高了网站的开发速度。

3 系统整体架构

家庭酒店商务平台主要划分为数据模型层,视图层和控制层。

数据模型层:建立对象和数据库表的一一映射关系,实现数据表基本的增删改查操作。

视图层:Django中的视图由view和template来实现,主要负责显示平台的用户界面。

控制层:控制层由Django的URLconf实现,主要负责平台内部的业务逻辑实现。

4 系统功能设计

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作为Nginx与Django的中间件,主要对http请求进行解析,然后交给Django来处理。

Database(数据库):前面提到Django的特性之一是它的ORM(对象数据映射),通过ORM方式控制底端的MySQL数据库[8]。

4.2 系统用户设计

家庭酒店商务平台的用户可以分为普通用户和管理员用户两类,其中普通用户又可以细分为房客和房东。

4.2.1 普通用户

普通用户可以通过邮箱或者电话在该网站进行注册,注册完成后用户登录网站可以进行相关的操作。如果用户是房客的话可能会浏览网站的酒店,查看酒店的详细信息以及进行后续的预订等操作。如果用户想出租自己的房源,成为房东的话,他可以点击增加房源,然后填写房源相关的信息,最后添加成功。这些操作都可以在个人中心中查看。

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创建数据表。

说明:避免数据之间的删除操作相互影响,在数据库设计时没有强制添加外键约束,只是逻辑上相互关联。为了避免数据的丢失,尽量采用逻辑删除,而非物理删除。

4.5 界面设计

图3 数据库设计图Fig.3 Database Design

对于一个网站来说,前端界面的显示非常重要,因为这是离用户最近的模块,它的设计直接影响用户体验的好坏。本文采用的Django框架自带了表单样式,但是考虑到界面的美化效果,我们会将系统所有的表单在html页面中重写,结合前端技术html5,css,js等给用户呈现动态交互的前端界面。Web性能也是前端设计考虑的一个重点,我们会在Django的基础上构建新的web框架,融入ajax特性,大家都知道ajax是异步刷新页面,就是在不刷新整个网页的情况下进行更新数据,这一特性的融入,再利用一些开源库和自己开发的组件可以达到全面提升web性能的目的,从而可以带给用户较好的用户体验。

5 系统实现

家庭酒店平台采用的是Django框架,主要包括普通用户和管理员用户两个主要用户角色,其中普通用户又细分为房客和房东,在这里由于本文篇幅限制,主要简单介绍一下用户权限控制模块的实现及其消息中心模块的实现。

5.1 用户权限控制

用户权限可以分四部分:未注册用户,房客,房东。不同的身份拥有不同的权限。我们把不同权限下看到的操作叫做目录。然后将所有的目录都录入到目录表(或权限表)中,给他设置相应的目录编码、目录名称、是否为根目录、父目录编码等信息。

未注册用户:当其打开本网站时,判断其是否登录,如果没有登录,则将未注册用户的目录权限查出来,然后根据相应的目录权限把相应的目录名称显示给未注册的用户进行浏览操作。

房客:当未注册用户需要进行提交订单、评论等操作时,提示用户进行登录操作,若用户没有账户则进行注册操作,当该用户注册完成时,成为房客角色,将房客所拥有的所有目录权限,分配给该用户即将房客权限添加到该用户权限表中。然后当用户进行登录操作时,查询该用户的用户权限,根据查询出来的权限列表显示相应的目录。

房东:当房客要发布房源信息时,提示该房客填写相应的信息,比如真实姓名、身份证号、支付宝信息等。当这些信息校验通过后,该房客将有房客身份转换为房东身份,同样将在该用户的账户上追加房东所拥有的权限。

注意:未注册的用户在完成注册之前是没有房客权限的,比如:不能提交订单,评论等;房客在发布房源时要填写相应的信息,在信息填写校验完成之前是不能够成为房东的,及不能拥有房东的权限,只有所有校验通过之后,才能够成为房东。

图4 未注册用户主页面Fig.4 Unregistered User Home Page

图5 房客主页面Fig.5 The Roomer Home Page

图6 房东主页面Fig.6 The Landlord Home Page

如下图4为未注册用户访问网站时的主页面,图5为房客登录系统后显示的主页面,图6为房东登录系统后显示的主页面,从效果图可以看出,未注册用户没有任何子功能模块,房客下面有房客中心的子功能模块,而房东则既有房客中心的子功能模块,又有房东中心的子功能模块,这就是用户权限控制模块所实现的,不同的用户对应不同的权限。

5.2 消息中心

消息系统是房东和房客沟通的桥梁,每一条消息都和一个User相关联,只有注册登陆的用户才有权限接收和发送消息,消息中心初始化时显示用户最近的聊天记录。用Django和ajax实现这个模块,首先在Django中的app中加入message应用,然后在消息应用的models中设置相关的消息字段;forms中主要实现接收消息的人的验证,数据的保存等;url.py中设置发送消息,接收消息,查看消息,回复消息等;最后在view中实现url对应的def函数。发送消息用ajax,后台完成消息的存储。使用轮询请求get新消息展示在消息中心。如下图7是消息中心的原理图,图8是房客的消息中心效果图。

6 小结

家庭酒店是一个新的酒店租赁模式,存在很多的机遇和挑战,本文在以中国这个大市场为前提的条件下,首先介绍了家庭酒店这个新型的酒店模式所面临的机遇和挑战,介绍了基于Django的o2o模式的MTV软件设计模型的关键技术和设计思想。详细介绍了整个平台所用的Django框架,MySQL数据库,jQuery和bootstrap前端框架等技术,同时从系统结构,系统用户设计,系统功能模块设计,系统数据库设计和界面设计给出了整个系统的功能设计,最后是系统相关模块的实现。该平台的实现是对现有传统酒店模式的创新,不仅丰富了现有酒店的模式,从一定程度上也缓解了酒店房源的紧张,让房客和房东通过该平台实现共赢,促进经济共享。

图7 消息中心原理图Fig.7 Schematic Diagram of Message Center

图8 房客消息中心Fig.8 Message Center of Roomer

参考文献

[1] Django community.The Django Book[OL]. [2016]. http://www. djangobook.com/.朱道雨. 基于Django的旅游管理信息系统的建设[D]. 北京:中国地质大学. 2011.

[2] ZHU D Y. The Construction of Tourism Management Information System Based on Django[D]. Beijing: China University of Geosciences. 2011. (in Chinese)王冉阳. 基于Django和Python的Web开发[J]. 电脑编程技巧与维护, 2009, 16(2): 55-59.

[3] WANG R Y. Web Development Based on the Python and Django[J]. Computer Programming Skills and Maintenance, 2009, 16(2): 55-59. (in Chinese).徐旭铭. Django Web开发指南[M]. 北京: 机械工业出版社, 2009.

[4] XU X M. Django Web Development Guidelines[M]. Beijing: China Machine Press, 2009. (in Chinese).陈林. 基于Django的英语在线视频教学系统的设计与实现[D]. 厦门: 厦门大学, 2014.

[5] CHEN L. Design and Implementation of Online English Video Teaching System Based on Django[D]. Xiamen: Xiamen University, 2014. (in Chinese).吴吉义, 王中友. MySQL原理与Web系统开发[M]. 北京:清华大学出版社, 2009.

[6] WU J Y, WANG Z Y. MySQL Principle and Development of Web system[M]. Beijing: Tsinghua University Press, 2009. (in Chinese).刘欣. 基于MVC模式的Web软件系统开发框架设计与实现[D]. 山东: 山东大学, 2013.

[7] LIU X. Design and Implementation of Web Software System Development Framework Based on the MVC Pattern[D]. Shandong: Shandong University, 2013. (in Chinese).周玥. 基于Django框架的校园预约打印网站设计与实现[D]. 吉林: 吉林大学, 2013.

[8] ZHOU Y. Django-Based Campus Print Reservation Website Design and Implementation[D]. Jilin: Jilin University, 2013. (in Chinese).

O2O Family Hotel Business Platform based on Django

XIA Ya-li, DAI Zhi-tao

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 Hotel broke through the original hotel model, creating the new type of hotel renting in the internet era.

Family hotel business platform; Django; Python; O2O

TP311

: A

10.3969/j.issn.1003-6970.2016.12.026

夏亚丽(1990-),女,硕士研究生,主要研究方向:嵌入式系统与网络通信。

戴志涛,男,教授,主要研究方向:嵌入式系统。

猜你喜欢
房东消息数据库
给黄鼠狼当房东
袋熊房东炼成记
海鸟遇上恶房东
消息
消息
消息