许景贤 郭建宏 李华展
(泉州师范学院陈守仁工商信息学院, 福建 泉州 362000)
随着 Android、iPhone、WindowsPhone 等智能移动终端的普及,用户逐渐开始习惯随时随地利用碎片化时间了解资讯、查询信息、处理业务[1]。 为了便于管理,很多健身平台也开发了 Android、 iPhone、WindowsPhone 版的“签课”系统,用于实现学员在线课程预约和管理。但是这几种版本的系统开发成本较高,开发周期长,推广应用和更新维护均有难度[2]。此次开发的基于Django的健身平台微信“签课”系统,可以有效地解决此类难题。
Django 是由Python开发的免费开源网站框架,可以用于快速搭建高性能网站。Django 提供了开发网站经常用到的模块,减少了重复代码[3]。图1所示为Django的MVC开发模式。该模式中,models.py 定义各类数据模型(Model),和数据库引擎实现交互;templates文件夹中的各个模板文件代表视图(View);urls.py中定义的各种 url 访问入口和 views.py 中定义的各种处理函数(称为Django视图函数)代表控制器 (Controller)。基于Django的Web应用开发活动主要集中在models.py、templates文件夹中的各模板文件及views.py文件夹内,因此Django的开发模式通常也称为 MTV 开发模式[4]。
图1 Django的MVC开发模式
微信5.0以上版本中,公众账号分为服务号和订阅号,“签课”系统针对订阅号进行开发。公众平台消息接口为开发者提供与用户进行信息交互的能力。对于成功关注微信公众账号的用户,当用户发消息给公众号时,微信公众平台服务器会使用http请求对接入的网址进行消息推送,开发者服务器可通过响应对应的业务逻辑回复特定的数据,从而完成回复消息这一过程。图2为微信消息交互方式。
图2 微信消息交互方式
服务器搭建环境为Apache2.2+mod_wsgi+django1.8,具体配置步骤如下:
(1) 下载并在服务器上安装Apache2.2。
(2) 下载满足本系统版本的mod_wsgi.os,并将文件放置于Apache安装目录下的modules文件夹中。
(3) 更改Apache的http.conf文件配置,将mod_wsgi.os模块添加到Apache中。在http.conf文件中添加代码,将wsgi模块加入到Apache中:
LoadModule wsgi_module modulesmod_wsgi.so
(4) 创建Django项目,并在项目根目录下创建apache_wsgi.conf文件,在apache_wsgi.conf文件中写入代码,用于设置访问权限。
(5) 将apache_wsgi.conf文件的所在位置添加到Apache的http.conf文件中:
(6) 服务器配置完成,启动Apache,成功运行django程序。
公众平台的用户将信息提交给微信服务器后,微信服务器通过GET请求方式将信息发送到填写的URL地址并附上4个参数:signarture( 微信加密签名)、timestamp(时间戳)、none( 随机数)、echostr(随机字符串)[5]。开发者对参数Token、timestamp、none进行字典排序,对shal加密,并与signarture进行对比,确认此次GET请求来自微信服务器,随后原样返回echostr参数内容,使接入生效,完成网址接入设置[6]。在本系统中Token根据项目功能设置为WeChat。完成接口配置后,所有发送至本微信公众号的消息都将从微信公众平台服务器转发至接口URL,并由系统的后续模块完成信息的解析与回复。连接微信接口,需要在 views.py 中定义一个进行微信验证的函数home。
Django通过正则匹配网址,传递到对应函数;对应的函数再根据执行函数实现对应的功能,如验证微信Token、跳转templates文件夹中的模板文件。可以根据自身定义的地址,轻松完成网站地址设置。
配置项目下的url.py文件,部分代码如下:
urlpatterns = [
url(r′^wechat′, ′blog.views.home′), #微信接口验证及多图文回复功能函数地址
]
本系统使用的是MySQL数据库,需要对Django框中的setting.py文件进行数据库连接配置。
(1) 找到setting.py文件中的DATABASES元组,修改为对应的数据库信息:
′NAME′: ′books′, #该系统的数据库名称为books
′USER′: ′root′, #数据库用户名
′PASSWORD′: ′′, #数据库密码
(2) 在mysql里面创建books数据库。
(3) 运行python manage.py syncdb同步数据库。
Django需要配置静态文件的目录,用于专门存放项目的图像、js、css等文件;否则,正常放在模板templatels目录下中的静态文件无法被识别,导致图像无法显示。
(1) 配置项目下的url.py文件:
#在文件首行加入下列代码,导入所需静态文件的包
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
#在文件末行加入下列代码,识别静态文件路径
urlpatterns += staticfiles_urlpatterns()
(2) 配置项目下的settings.py文件:
#设置URL地址栏的目录名称
#指明静态文件根目录
STATIC_ROOT = os.path.join(os.path.dirname(__file__),′static′)
设计前台页面视图和模板视图(也叫控制器)是所有 Django Web 应用程序的核心,它提供了几乎所有实际的程序逻辑。 Django 视图就是 python 函数,它接受1个 Http Request 对象并返回1个Http Response对象[7]。本系统使用views.py 中的主功能函数文件。template是Django框架的视图文件夹,包含所有的静态网站,通过Django框架的URL分发机制,调用对应功能函数,渲染templates中的html模板,得到动态内容的网页。下面以最新课表模块页面的跳转为例:
(1) 在url.py文件中设置模块函数地址,当打开地址http:∥localhosttimetable时,将触发项目boosk应用下的views_wechat_timetable.py文件中的timetable函数。
urlpatterns = [
url(r′^timetable′, ′books.views_wechat_timetable.timetable′),
]
(2) 创建views_wechat_timetable.py文件,并创建函数timetable。
#设置文件保存的编码格式为UTF-8
#coding:utf-8
#设置timetable方法,打开templates文件夹下的timetable.htm网站文件
def timetable(request):
return render_to_response(′timetable.htm′, RequestContext(request))
在客户首次关注微信公众号时,将会收到1条包含4项主题的多图文消息(见图3)。
图3 多图文消息回复
(1) 向客户介绍健身的相关信息,让客户充分了解健身这一活动,更好地参与到健身行列中来。
(2) 向客户提供健身项目,让客户根据自己的爱好及需求去选择健身课程。
(3) 向客户提供公司的最新健身课表,有助于客户安排时间与课程的预定。
(4) 向客户展示教练团队师资,吸引客户参加课程。
本系统将使用认证后的订阅号进行微信开发。自定义菜单由健身课程相关信息、会员服务和签课预约这3个主菜单组成。分为3个一级菜单模块,每个一级模块里再嵌套二级菜单。
(1) 健身课程。介绍公司为客户提供的健身项目以及安排的健身课程等信息。
(2) 会员服务。详细介绍公司提供的会员卡种类,显示购买会员卡的链接。
(3) 签课预约。设置2个子菜单,分别为签课预约和教练中心。客户可使用签课预约链接进行登陆,在线完成课程预约;教练可登陆教练中心发布课程,确认客户预约的课程。
通过搭建基于 Django框架的微信“签课”系统,体现出Django在Web开发中的强大优势,不仅减少了开发者的工作量,同时也缩短了开发周期。以手机为浏览终端,Django 更加适合这种弱客户端的应用,是一种可行的移动预约应用构建方法。课程预约是生活中常用的服务需求,通过建立本系统能够满足微信用户的需要,为健身客户提供更为便利的服务。通过此微信“签课”系统,教练也可及时发布相关课程,提高了整个预约过程的效率。
[1] 陈毅,任正云.Django框架管理界面自动生成模块的优化设计策略[J].信息与电脑(理论版),2018(1):19-20.
[2] 王义嘉.基于分布式ETL和Django的终端运营管理系统[J].电子设计工程,2017,25(22):45-48.
[3] 濮文强,曹磊,夏斌.基于Django框架的关键词排名监控系统设计[J].微型机与应用,2017,36(20):97-100.
[4] 傅瑶.Python框架在WEB开发中的运用[J].电脑迷,2017(8):5.
[5] 夏亚丽,戴志涛.基于Django的O2O家庭酒店商务平台[J].软件,2016,37(12):121-128.
[6] 龚新定,余艳梅,吴小强,等.基于Django的实验室信息管理系统设计[J].微型机与应用,2016,35(22):108-111.
[7] 夏志富,王晗璐,李玉平,等.基于Django框架的智能商务监控系统的设计[J].微型机与应用,2016,35(12):21-23.