【Tornado】| 扫码签到系统雏形及思路
2018-03-03 09:54
253 查看
0. 前言
环境: python3.6模块: tornado
IDE工具: pycharm
1. 学习方法
不要过于追追根到底, 等到了一定阶段再去找原理;python的库很多, 掌握常用的几个;
qrcode模块可以生成二维码图片, 基于PIL;
2. 项目思路
用户扫描二维码,跳转到一个用户签到页面;用户签到页面, 用户填入正确信息,即可将签到信息存储到文件或者数据库;
用户签到页面, 用户填入信息不完整或者错误,跳转到错误页面;
3. 代码展示
3-1. 生成二维码
#!/usr/bin/env python #coding:utf-8 """ @Name: create_qr_code.py @Author: lvah @Date:3/1/18 @Connect: xc_guofan@163.com @Desc: """ # 导入模块 import qrcode import io def get_code_by_str(text): if not isinstance(text, str): print "请输入字符串参数....." return None qr = qrcode.QRCode( version=1, box_size=10, border=4, ) qr.add_data(text) qr.make(fit=True) img = qr.make_image() img_data = io.BytesIO() img.save(img_data) # print img_data.getvalue() # 返回二维码的图片句柄; return img_data if __name__ == "__main__": print get_code_by_str("猪肉")
3-2. 签到程序
#!/usr/bin/env python #coding:utf-8 """ @Name: sign_app.py @Author: lvah @Date:3/1/18 @Connect: xc_guofan@163.com @Desc: """ from tornado import web, httpserver, ioloop from create_qr_code import get_code_by_str SIGN_FILE_HANDLER = open('sign.csv', 'a') SIGN_FILE_HANDLER.write('姓名,部门,编号\n') # 部门, 逻辑处理模块; class IndexPageHandler(web.RequestHandler): def get(self, *args, **kwargs): # self.write('welcome to learn python!') self.render('index.html') class CodePageHandler(web.RequestHandler): def get(self, *args, **kwargs): # 根据传入的字符串或者网址生成二维码句柄; # img_handler = get_code_by_str("你好, 猪肉") img_handler = get_code_by_str("http://localhost:8080/sign") # 返回图片对象的内容 self.write(img_handler.getvalue()) # 用户签到处理模块; class SignPageHandler(web.RequestHandler): # 当用户请求为get时,跳转页面到签到页面; def get(self, *args, **kwargs): self.render("sign.html") # 当用户请求为post时,对用户提交信息做验证,并存储签到信息到文件中; def post(self, *args, **kwargs): name = self.get_argument('name') department = self.get_argument('department') num = self.get_argument('num') if name and department and num: print name, department, num # 将用户签到信息写入文件中; SIGN_FILE_HANDLER.write('%s,%s,%s\n' %(name, department, num)) # 手动刷新, 将缓冲区内容写入的文件; SIGN_FILE_HANDLER.flush() self.write('签到成功!') else: self.write('请填写正确的签到信息!') # 设置 settings = { 'template_path': 'templates', 'static_path':'statics' } # 分机号, 路由系统; application = web.Application([ (r"/", IndexPageHandler), (r"/get_code", CodePageHandler), (r"/sign", SignPageHandler), ], **settings) # socket服务器; if __name__ == "__main__": http_server = httpserver.HTTPServer(application) http_server.listen(8080) print "访问http://localhost:8080......." ioloop.IOLoop.current().start()
3-3. 其他的html页面文件
templates/index.html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>python学习课堂</title> </head> <body> <h1>签到</h1> <img src="http://localhost:8080/get_code"> </body> </html>
templates/sign.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>签到系统</title> </head> <body> <h1>python学习请签到:</h1> <form action="" method="post"> <p>姓名:<input type="text" name="name"></p> <p>部门:<input type="text" name="department"></p> <p>工号:<input type="text" name="num"></p> <p><input type="submit" value="签到"> </p> </form> </body> </html>
4. 效果图展示
4-1. 扫码后跳转到签到网页
4-2. 用户签到页面
- 签到成功页面
签到失败页面
5.总结
此处前端界面没有进行设计, 实现了基本的功能;当然还有很多瑕疵,比如签到的这个部门应该选择数据库已有的部门进行选择;
相关文章推荐
- 在生产系统使用Tornado WebServer来代替FastCGI加速你的Django应用
- 交通灯管理系统7千元面试题解题思路及其过程 笔记-----IT界最著名的IT讲师张孝祥讲解
- 秒杀系统架构优化思路
- 软件系统设计思路
- 利用工作流引擎技术设计应用系统的思路
- 每日自动签到工具的制作思路
- 黑马程序员--java_交通系统代码思路分析
- 秒杀系统架构优化思路
- 微信的数据结构--我做粉丝系统仿照这个思路
- 部队营区人员出入请/销假管理系统设计思路
- 更系统的SurfaceFlinger思路以及代码追踪
- B/S系统操作日志设计思路
- 黑马程序员_java基础笔记(14)...交通灯管理系统_编码思路及代码
- 秒杀系统架构优化思路
- 消息推送系统设计思路
- 淘宝的KV存储系统的设计思路总结-tair系统
- 小型互联网公司的IT系统建设思路
- 电商 秒杀系统 设计思路和实现方法
- 黑马程序员_银行业务调度系统思路及总结
- 分布式系统重复/并发请求解决思路