作者 | 武斌,一位致力于Python让生活更美好的programmer
责编 | Jane
出品 | Python大本营(公众号id:pythonnews)
前言
在工作中,大家应该都遇到过这类问题:一项工作需要多人配合协调来完成,或者个人的工作内容会影响整个团队等问题,这个时候,能及时记录与分享个人的工作就显得尤为重要。也许你可以微信、QQ建个群,大家共享,但有时候消息太多就会遗漏,甚至有些内部资料进度不能在公网传输,那怎么办呢?
今天,作者就分享给各位小伙伴们如何在 Linux 系统中用 Python 为自己定制开发一个工作记录与分享系统。
系统特点:
1.随时存取需要分享的信息
2.具有一定的授权功能,允许其分享给需要的人员
3.运行在私网环境,安全可靠
先给大家看看运行效果吧(PS:不会美工,小伙伴别吐槽~)。
以上是部分系统运行截图,感兴趣的小伙伴下面就随着我们一起码起来吧!
准备
以下程序软件全部为开源免费软件:
1.平台及软件:Linux、Python、MySQL;
2.开发环境:PyCharm;
3.Python 扩展包有:Tornado、pymysql、hashlib、time、psutil、json;
一、安装操作系统等基础环境
· Linux:CentOS 7.1 x64;其它版本也可,根据自己喜好决定。
· Python:官网下载,编译安装即可;本文项目是基于 Python 3.6 版本开发。
· 数据库:MySQL 5.7.20;下载与操作系统对应的 rpm 包安装。
· Tornado:基于 Python 的 Web 开发框架,非阻塞式服务器,性能强大,此项目中用的是 4.5.2 版本,在Python命令行使用命令 pip install tornado 安装即可。
二、数据库设计
需要设计三张表,如图4:
· 表 T_CONTENT:用于存储主要信息记录,包括操作人、内容、时间(系统根据当前提交时间自动录入)、创建者ID等字段;
· 表T_USER:用于存储用户的账户、密码、权限等;
· 表T_SETTING:用于存储系统设置等信息。
可以直接写 SQL 语句在数据库中执行建表,也可以在诸如 Navicat 之类的客户端程序中可视化建表。表中的字段也是根据业务需要而设置。
图 4
三、构建框架,建立Web服务
使用 Tornado 可快速搭建一个 WEB 服务器,为系统提供 Web 服务框架。其中 application 是指每个子应用功能,由于他们是由不同的 URL 组成的,当用户浏览器访问不同的 URL时,框架会进入对应 application 中定义不同处理子程序方法的入口,从而进入子程序处理业务。它的数量取决于业务的需求。当然我们还要设置一些诸如模板目录、cookies设置、根目录等参数,如图5:
图 5
四、创建 HTML 渲染模板
Tornado 可以基于模板使用 render 方法渲染出 HTML 代码返回给浏览器,呈现在用户面前。用户需要操作和返回的内容均要在此预先定义模板,在程序运行时根据业务流程动态生成用户需要的数据,渲染为HTML代码返回给浏览器。这里就需要仔细考虑业务的流程以及页面样式。此处 HTML 模板全部位于项目根目录下的 templates 目录下,如图6:
图 6
五、用户授权访问与安全
用户登录提交需要分享的信息,或访问经过授权的他人分享的信息,此时需要具有完备的验证授权机制。在这个项目中的用户表中创建了用户名、密码、账户类型、序号等字段用于标识用户。此外,为确保安全,在数据库中存储的密码均使用 MD5 加密算法进行加密处理,如图7,也可以使用其它更强大的加密算法加密,可自行修改。
图7
在用户提交数据时,每个提交的表单中均启用了 XSRF 跨站请求伪造保护验证。Cookies 也启用了随机 44 位的密钥长度,也可根据情况自行设置。
用户提交的数据信息不仅是为了自己统计和查看,更重要的是分享给他人,只有经过授权的用户才能登录并可以分享信息。在建立用户时,用户信息表中就创建了用户id,当每位用户提交数据时,在记录表中同步添加用户 id,这样就通过用户 id 建立了用户与记录之间的对应关系。再通过用户信息表中的权限字段,就可以访问到所授权的信息,实现授权共享。此外,还在每页的左下角提供关键字搜索功能,便于快速查找、定位到想要的条目。
六、后台管理与其它
系统上线运行后同样需要维护,比如设置每页显示的条目数、提交数据错误后如何更正、重置密码(忘记密码)、用户权限的授权与查看、磁盘与系统状况等等。这些问题的处理不能仅由管理员进入操作系统或数据库通操作,否则这将是一个巨大的工作量,同时也存在安全隐患。
这里通过权限管理,同步设计了管理员后台维护页面,这样管理员通过 Web 页面的方式即可管理系统绝大多数的运行情况。管理后台如图8:
图 8
数据会每天随着用户的不断提交而增大,上线后需要不定期关注磁盘的使用情况。此项目中,数据目录在根目录下,故只监控了一个根目录,也可以根据情况设置监控多个目录。后台磁盘监控使用 ajax 异步更新机制,每十秒自动更新一次数据,磁盘已用占比用饼状图显示如图9:
图 9
此系统已经在实验环境中运行一年两个月,稳定可靠。但还有一些不足之处,如不能添加图片、视频、文件的共享,还有不断完善的空间,这里抛砖引玉,各位小伙伴们有兴趣可以继续完善。
相关源码地址(Github 地址):
https://github.com/icewu521/operation_record
(本文为Python大本营投稿文章,转载请微信联系 1092722531)
福利
扫码添加小助手,回复:1,加入Python技术交流群,共享Python学习资料,定时更新。
推荐阅读:
Python语音识别终极指南(收藏)
GitHub上7000+Star的Python常用代码合集,值得收藏!
我用Python分析了翟天临的论文,学术还是要认真做啊!
Java帝国对Python的渗透能成功吗?
用Python分析《工作细胞》的一万多条评论后,非漫迷也要入番了
7种常见的机器学习算法的Python实现(附完整代码)
2018 Python开发者大调查:Python和JavaScript最配?
十大经典排序算法动画与解析,看我就够了!(附代码)
❤Python大本营“号内搜”功能全新升级
搜索功能更强大,请在公众号菜单栏体验