版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要III摘要随着疫情在全球逐渐蔓延,各疫情受害国家都采取了限制人员流动与聚集的一些策略。各个社区在限制人员出入的同时也对必要的出入人员进行了体温测量与登记,并且需要随时了解到社区内各住户的健康情况。为了方便社区工作者对出入人员进行登记以及对社区人员的健康情况进行了解,也为了住户能够随时了解疫情消息并及时反馈相关信息。社区人员出入登记与健康管理系统便在此需求下被编写出来以解决这些问题。本系统使用python语言设计,以Django框架技术作为系统的web框架支撑,以HTML语言和DTL模板作为网页设计工具在实现基础功能的上,不仅降低了开发和使用成本,还提供了更加丰富的用户体验。本论文首先分析社区人员出入登记与健康管理系统所需的技术和业务需求,然后阐述如何运用基于Django框架与Python技术实现该系统,同时阐述Django框架中客户端与服务器端进行通信具体情况。关键词:社区管理;Django;web程序设计PAGE161引言1.1开发背景随着疫情的爆发对人民生活的造成了重大影响,全国各地对此次疫情相关的防护管控工作都高度重视。在此背景下不但各地医务人员驰援武汉,各地工人也在武汉不辞辛劳建设雷神山医院与火神山医院。全国各地各个社区也都开始严格管控社区内的人口流动以及对进出人员的体温查询以应对此次疫情扩散。社区管理人员需要对每一位住户每一位户主进行出入社区的次数与出入时间的管控,并对进入社区人员进行体温检测与记录,以预防疫情期间发生人传人的病毒社区传播。在此情景下,社区工作者需要做的是对每天进出的人员进行部分相关信息的记录,并且能够随时调用所需要的信息进行分析以避免意外发生,将对近期有与外界接触并有部分症状的人员进行居家隔离的劝说。而正是由于各种工作的繁重复杂,所以社区工作者们便需要借助趁手的工具来帮助自己进行并完成信息的记录与存储的工作。1.2开发目的为了解决疫情期间社区工作者面对繁重的数据记录而又要保证工作不出披露,需要提高社区工作者的工作效率、帮助社区工作者轻松应对并且更加有兴趣地对待信息记录、的工作减轻社区工作者的工作负担而开发出该社区人员出入登记与管理系统。同时该管理系统也可用于其他一些需要对出入人员进行登记与健康管理的机构或部门进行一些对出入人员登记的工作。1.3项目意义本项目的意义主要在于能够为全国的各个城市的各个社区提供一套较为轻便、操作简洁明了、性价比高、用户体验丰富、性能比较完善的社区出入登记管理系统,为该产品向全国推广奠定了基础。由于该产品操作简洁明了性价比高、实用性能较强、用户体验舒适、效果突出,比较容易被各个社区部门机构接受采用,所以该系统将改变繁杂的登记过程以及手写输入慢不易保存携带不方便而且数据调用复杂拖沓的现状减轻工作人员的负担降低数据出错的概率、加强对近期体温异常人员的一键筛选与跟踪观察。方便用户进行个人健康信息的汇报以及需求和重要相关信息的反馈,同时也让用户能通过此系统了解更多与疫情有关的信息以及对疫情防控知识。2技术需求分析2.1相关技术介绍(1)Django框架Django框架最早是开发出来是用来管理新闻内容为主的网站,被应用在劳伦斯出版集团旗下(LawrenceJournal-World)。Django框架是一个完全由Python编程语言写出来的Web应用框架,Django框架是基于WSGI协议的开发的同时也是开放源代码的。Django框架采用了MVT(ModelViewTemplate)的软件设计模式。该框架是一种CMS(内容管理系统)软件。2005年7月这套框架在BSD许可证下发布。这套框架的名称Django当时是取自于比利时的吉普赛爵士吉他手DjangoReinhardt的。(2)Python编程语言Python,是由吉多·范罗苏姆创造的一种计算机程序设计语言,被许多程序员广泛使用的跨平台的属于一种通用型的编程语言。第一个版本的Python于1991年发布。可以把它看成是对LISP的一种改良版本(其中加入了一部分其他不同编程语言的所具有的优点,例如面向对象之类)。Python作为一种解释型语言,它使用空格和缩进来划分代码块的逻辑结构,而不像其他编程语言那样使用大括号或者关键词。这都与其最初设计哲学有关,它主要强调的是代码的可读性和语法的简洁性。Python往往能够做到让开发者尽可能使用更少的代码来表达更多的内容与想法,这在与C++或Java等编程语言相比之下尤为突出。无论是小型程序还是大型程序,Python语言所编写的代码都试图让程序的逻辑结构以及代码的语言结构更加简洁清晰。Python语言与Scheme、Ruby、Perl等动态类型编程语言具有一定的共同特征,Python也拥有动态类型系统和垃圾回收的功能,能够自动化管理内存的使用情况,并且能够支持多种多样的编程范式,其中包括面向对象、命令式、函数式和过程式编程等等。Python解释器本身几乎可以在所有日常可见的操作系统中运行。Python的正式解释器C-Python是用C语言编写的、是一个由社群驱动的自由软件,当前由Python软件基金会管理。Python语言是一个高程度结合了解释性、互动性、编译性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。(3)Html语言与DTL模板HTML是一种具有标识性的语言,也可以翻译为超文本标记语言。这种语言在使用时需要用到一系列标签.通过这些不同的标签进行不同的组合以达到将网络上的文档格式统一,这就使分散的Internet资源连接成为了一个逻辑整体。HTML文本是由HTML命令编写组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等超文本信息。超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。DTL模板是Djangotemplatelanguage的简称,Django的模板语言目标是在力量和轻松之间取得平衡。它的设计让那些习惯于使用HTML的人感到舒适。对于一部分接触过其他例如Smarty或Jinja2基于文本的模板语言的开发者而言,那么这部分开发者中绝大多数人应该对Django的模板会有一种宾至如归的感觉。2.2功能性技术需求(1)实现跨浏览器运行客户端程序必须能够运行在所有浏览器上,不需要针对性地一些特定的浏览器修改代码。(2)客户端与服务器之间数据的异步交互能够实现客户端程序对服务器端的异步数据请求。(3)一键筛选显示社区出入人员管理系统能够一键筛选出近期体温异常的人员进行逐一排查,能一键筛选出近期有出入记录的社区成员。2.3非功能性技术需求(1)规范性1)字符集规范社区人员出入登记与健康管理系统的开发过程中必须考虑数据库所使用的字符集,避免出现由于字符集不同而造成的中文乱码问题。应用统一使用Unicode字符集编码标准。2)代码的一致性代码部分遵循简洁严格的编码规范,用以保证代码风格的一致性。编码规范主要依据python语言规范中的编码标准部分,并根据本项目的需求做出修改和扩展。3)数据库命名规范社区人员出入登记与健康管理系统数据库中的数据主要来自社区人员数据库,为了方便数据抽取,表中的字段命名规则必须与其保持一致,全部使用拼音首字母的组合作为字段名称。4)文档规范代码编写以及文字输出都具有完整性、内容一致性、规范性和内容详实性。(2)性能要求尽可能在最短的时间内把人员数据处理的结果展现在用户面前,要求响应时间长度最长不能超过3秒。(3)易用性社区人员出入登记与健康管理系统应当做到“易学、易用、易理解”,向用户提供良好的交互性和操作性。(4)可扩充性社区人员出入登记与健康管理系统是一个逐步实施、不断完善的系统,要保证整个系统从各方面都可以进行不断的扩充、升级和发展。需要做到以下几点:1)系统的数据结构在设计上合理、稳定、灵活,在结构上能保证系统的可扩充性;2)适应系统实施规模的延伸;3)适应系统使用过程中数据量的增加;4)随着技术不断的进步,可以方便地升级系统。(5)可移植性社区人员出入登记与健康管理系统改造项目应满足下述可移植性需求:1)适应不同的硬件环境。软硬件升级不会造成大的改动。2)遵照开放系统的标准,确保软硬件的可移植性。2.4运行环境与开发工具(1)客户端环境操作系统:WINDOWSXP及其升级版本;浏览器:IE6.0及以上版本(2)服务器环境操作系统:ubuntu18.04LTS;Python版本:3.6;数据库平台:Oracle9i及以上版本。MySQL数据库驱动:sqlclient1.10。(3)网络环境支持TCP/IP协议。(4)开发工具网页开发工具:Pycharm20;Django框架开发工具:Django1.11;Python开发工具:PyCharm、pip20.1;数据库开发工具:PL/SQLDeveloper8.0;3业务需求分析3.1系统概况随着信息技术的发展,疫情在全球范围的扩散以及许多安全要求较高的部门机构对出入人员进行严格的审查登记需求越来越高。登记信息的获取方式与存储方案都在进行着不断地升级,工作人员对社区人员健康的相关工作越来越重视,数据分析应用工作不断深入,个人健康信息登记需求的广度、深度和分析层次都在在逐步不停提高,对数据抽取、分析、挖掘等要求越来越高,需要社区健康管理系统辅助决策分析为突破口,为领导决策、管理分析提供更多更直观的信息量。3.2项目目标能够灵活轻松记录各种人员出入时间及身体状况等信息,并在需要的时候可以快速查询检索调用所需的已知信息加以利用进行不同的运算分析与研究,甚至运用仪表、报表、进度、饼图、折线等直观展示收据动态。并且做到界面简洁美观大方易于理解运用,使枯燥的数据更为简单、直观。3.3总体功能业务需求社区人员出入登记与健康管理系统主要是为社区工作者提供更加方便简洁轻松高效地应对处理社区人员出入登记以及社区人员健康情况的管理,为管理层提供直观的形象的数据来展示所属区域的人流量、人员体温、住址、身份证号(可以此查询最近是否与新冠病毒患者同时乘坐相同公共交通工具,亦可用作唯一识别序列号)等内容。便于领导层对当前情况的把握以及对未来趋势的决策管理分析。随着疫情在全球的扩散程度以及越来越多国家严禁人员聚集性活动,越来越多的社区对于人员的出入都会需要做一些信息的登记。换言之,该系统的需求也越来越广、使用面也随之扩大,对工作者而言自然就会需要有这么一套系统能够减轻自己的工作量,加速自身的工作效率以至于让工作手法多元化。而对使用者而言最重要的莫过于系统的实用性以及功能上是否完善。3.4分模块业务需求(1)登录模块模块概述:用户进入社区出入人员健康登记管理系统平台的唯一入口。模块描述:1)登录模块设置用户名和密码输入框。2)用户登录模块设置有验证码认证。2)根据用户角色判断用户的模块浏览权限。(2)菜单栏模块概述:通过标签式的菜单栏设置,可方便快捷的选择各种功能模块或信息单元。模块描述:1)菜单栏设置“某社区人员健康管理”LOGO。2)菜单栏设置的各种标签包括:信息录入、出入登记、体温记录、需求反馈、异常筛选、疫情相关。3)菜单栏右上方显示当前用户、所属社区部门等信息。(3)健康信息概况模块概述:通过文字、图片和图形展示当前社区体温异常人数及分布总体情况。建立链接模块展示全国乃至全世界的疫情最新情况以及进展。模块描述:1)当前地区的疫情状况。2)全国以及全世界的疫情状况(建立权威网站链接并标注来源)。3)“战疫”相关最新资讯。4系统设计4.1系统架构设计本系统的架构设计在社区成员与管理员两种身份登录系统所接触的有所区别。社区成员主要是上报自身的健康情况以及向管理员反馈一些需求或提供一些信息,例如上报其他社区人员疑似感染的信息或请求帮助购买口罩之类的需求。而管理员主要是对出入人员及其健康情况(如体温、有无其他症状等)进行登记做好记录工作。具体的系统架构如图4-1所示。4.2客户端与服务器端通信框架社区人员出入登记与健康管理系统的设计所使用的是基于Django框架MVT的软件设计模式。在客户端与服务器端进行相互通信时所进行的,由客户端首先通过浏览器向服务器端发送Request请求,实际上Django在相互通信上和其他Web框架并没有什么太大的差别,对于HTTP的请求处理流程基本都是类似于:接收request,返回response内容。Django的具体处理流程大致如下:1、加载projectsettings在使用django-admin.py文件来进行创建project的同时,系统将会自动生成许多可供我们使用的不同默认文件,例如settings.py文件和manage.py文件等,而且在创建WSGIServer之前系统会执行下面的这个引用:fromdjango.confimportsettings上面引用在被执行的作用在于读取os.environ中的DJANGO_SETTINGS_MODULE配置文件,并加载项目配置文件生成settings对象。因此,我们可以在manage.py文件中看到,在获取WSGIServer之前,会默认先将project的settings路径加到os路径中。2、创建WSGIServer无论我们是使用runserver运行的Django项目还是使用uWSGI运行的Django项目,在项目启动时都无一例外会调用django.core.servers.basehttp中的run()方法,依据此方法来创建一个django.core.servers.basehttp.WSGIServer类的实例,到这一步WSGIServer便创建成功了,在这之后只需要调用当前实例的serve_forever()方法来启动HTTP服务。run方法的源码如下:3、处理Request根据以上的代码描述,我们就可以清楚地了解到:在WSGIServer的实例被创建的同时一般也会指定request请求的Handler,WSGIServer会在用户向服务器端发送request请求的时候创建一个WSGIRequestHandler的实例,使用该实例的handler方法处理HTTP请求(其实最终是调用wsgiref.handlers.BaseHandler中的run方法处理)。WSGIServer通过set_app方法设置一个可调用(callable)的对象作为application,这个application便是Django处理request请求的核心逻辑,它会创建一个WSGIRequest实例。也就是说handler方法最终会调用设置的application处理request请求并返回response响应。4、返回Response上文中的application在Django中一般是handlers.wsgi.WSGIHandler的对象,而WSGIHandler继承自django.core.handlers.base.Basehandler。其中,在BaseHandler对象中有个get_response方法,使用这个方法时会加载Django项目的ROOT_URLCONF,然后根据URL对应的规则找到对应的view方法(类),view逻辑会根据request实例生成并返回具体的response。Django系统框架的客户端与服务器端的相互通信流程详情可见图4-2:5系统实现社区人员出入登记与健康管理系统使用了Python和Django进行的系统设计,网页前端设计使用的是Html标签语言和Djangotemplatelanguage模板,具体实现方式可见下文。5.1服务器端(1)系统安装在使用社区人员出入登记与健康管理系统之前首先要配置好使用该系统所需要的环境,以及需要在使用之前准备好的一些前提条件。1)准备首先需要下载Python解释器,并且将其安装目录下的启动文件添加为计算机操作系统的系统环境变量。接着需要升级系统到最新版,终端下执行:sudoaptupdatesudoaptupgrade-y待完成更新之后,建议重新启动下系统,再进行后面的操作。终端下执行:sudoreboot待系统启动后,可以开始安装依赖的MySQL以及python环境了。安装依赖终端下执行:接下来需要设置python的虚拟环境,终端下执行:cd~mkdir-ppython/env&&cdpython/envvirtualenv-p/usr/bin/python3managementsourcemanagement/bin/activate在执行完上述命令之后,下面就要开始安装社区人员出入登记与健康管理系统运行所需要的依赖环境了。2)安装使用pip安装时终端下执行以下代码:source~/python/env/management/bin/activatecd~/python/Managementpipinstall-Urrequirements.txt3)配置Django的系统配置文件都在settings.py文件里,可根据需求修改里面的代码以达到修改系统配置的目的。例如中间器的配置管理的代码如下:MIDDLEWARE=['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.gzip.GZipMiddleware',#'django.middleware.cache.UpdateCacheMiddleware','mon.CommonMiddleware',#'django.middleware.cache.FetchFromCacheMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','django.middleware.http.ConditionalGetMiddleware','blog.middleware.OnlineMiddleware'](2)数据库配置进行MySQL数据库的配置时首先终端下执行以下代码:sudomysql_secure_installation然后按提示一步一步继续操作,需要注意的是,root密码一定要牢记,后面会使用root用户登录:mysql-uroot-p如果无法直接成功登录,可以使用如下步骤,请注意,我这里的密码只是示例,请修改成你自己的密码.:sudomysqlALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'Q1W2E3R4T5#$%qwe';FLUSHPRIVILEGES;exit如果出现ERROR1819(HY000):Yourpassworddoesnotsatisfythecurrentpolicyrequirements的提醒便说明当前设置的密码安全系数不够高,需要提供复杂程度更高的密码。接下来修改MySQL的默认字符集,使用任意可用的编辑器,如vim或者nano,打开“/etc/mysql/conf.d/f”配置文件,注意,需要使用root权限,如使用vim:sudovim/etc/mysql/conf.d/f删除该文件的[mysql]行并输入如下内容:[mysqld]character-set-server=utf8mb4collation-server=utf8mb4_unicode_ci[client]default-character-set=utf8mb4[mysql]default-character-set=utf8mb4退出并保存之后重新启动MySQL服务,终端下执行:sudo/etc/init.d/mysqlrestart接下来就可以登录MySQL数据库并创建用户和数据了,终端下执行:mysql-uroot-p#进入MySQL终端CREATEUSER'manage'@'localhost'IDENTIFIEDBY'**********';CREATEDATABASE`manage`/*!40100DEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci*/;GRANTallONmanage.*TO'manage'@'localhost';FLUSHPRIVILEGES;exit#退出与所有密码设置一样,这里的*********密码也需要改成你自己想要设置的密码。(3)运行修改`DjangoBlog/setting.py`修改数据库配置,如下所示:DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'djangoblog','USER':'root','PASSWORD':'password','HOST':'host','PORT':3306,}}创建超级用户终端下执行:bash./manage.pycreatesuperuser创建测试数据终端下执行:bash./manage.pycreate_testdata收集静态文件终端下执行:
bash./manage.pycollectstatic--noinput./manage.pycompress--force开始运行:执行:`./manage.pyrunserver`(4)管理Django的管理界面对于编辑管理页面来说既省时又好用。其中对于数据编辑工作而言更是发挥了该管理系统事半功倍的效果。特别是对于那些暂时没有任何数据库编程能力背景的管理员来说,输入数据变得更加简洁轻松。这样的管理界面不但可以及时查验管理者录入的数据,更是能够同时检测先前建立的部分模型。要实现该功能首先在INSTALLED_
_APPS
设置之中加入“django.contrib.admin”、“django.contrib.sessions”、“django.contrib.auth”、“django.contrib.contenttypes"。同时也需要在urls.Py文件中添加诸如以下的语句:urlpatterns=patterns("book.views",(r'^somepage/$',method_splitter,{‘GET’:somepage_get,'POST':somepage_post}),)这样的urls.Py文件中将View中“GET”和“POST”方法分离,“GET”和“POST”两个方法都是浏览器发送数据到服务器端,两者的区别主要在于“GET”方法更强调操作的安全性;“POST”方法是需要进行数据交互,此时用户要对数据变更的结果负责。Django在建立Models的同时,也为数据建立了一套审核机制。为避免误删除关联对象中的数据项,Django会提示操作用户。当要删除现有对象时,管理界面要求确认删除动作,确认删除页面显示出对象,在一定程度上,可以避免用户的误删除。5.2客户端(1)客户端代码格式说明社区人员出入登记与健康管理系统客户端主要由HTML代码和JavaScript代码组成使用了Djangotemplatelanguage模板。Django模板是文本文件,它可以生成任何基于文本的格式(HTML、XML、CSV等)模板包含变量(在计算模板时用值替换)和标记(控制模板的逻辑)下面是一个说明一些基本知识的最小模板。{%extends"base_generic.html"%}{%blocktitle%}{{section.title}}{%endblock%}{%blockcontent%}<h1>{{section.title}}</h1>{%forstoryinstory_list%}<h2><ahref="{{story.get_absolute_url}}">{{story.headline|upper}}</a></h2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖北中医药高等专科学校单招综合素质笔试备考试题含详细答案解析
- 2026贵州铜仁沿河土家族自治县公开招聘事业单位工作人员81人考试重点试题及答案解析
- 2026年昆山登云科技职业学院高职单招职业适应性测试备考试题及答案详细解析
- 2026年江西财经职业学院单招职业技能考试备考试题含详细答案解析
- 2026年青岛农业大学海都学院单招综合素质考试备考试题含详细答案解析
- 2026年黔南民族幼儿师范高等专科学校单招综合素质笔试备考试题含详细答案解析
- 2026年贵州农业职业学院高职单招职业适应性测试备考题库及答案详细解析
- 2026年长江师范学院单招综合素质考试备考试题含详细答案解析
- 2026年贵州城市职业学院单招综合素质考试模拟试题含详细答案解析
- 2026年浙江经贸职业技术学院单招职业技能考试模拟试题含详细答案解析
- 2026上海市事业单位招聘笔试备考试题及答案解析
- 高支模培训教学课件
- GB/T 21558-2025建筑绝热用硬质聚氨酯泡沫塑料
- 企业中长期发展战略规划书
- 道路运输春运安全培训课件
- IPC-6012C-2010 中文版 刚性印制板的鉴定及性能规范
- 机器人手术术中应急预案演练方案
- 2025年度护士长工作述职报告
- 污水处理药剂采购项目方案投标文件(技术标)
- 医院信访应急预案(3篇)
- 2025年领导干部任前廉政知识测试题库(附答案)
评论
0/150
提交评论