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 iodef get_code_by_str(text):if not isinstance(text, str):print  "请输入字符串参数....."return  Noneqr = 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_dataif __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_strSIGN_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】| 扫码签到系统雏形及思路相关推荐

  1. 微信扫码签到系统asp源码2.0示例

    asp写的微信扫码签到系统,代码简单. 不管是工作会议,还是员工活动,每次集会基本都需要签到.传统的纸质签到效率低下,找名字费时,排队费时,更可怕的是好不容易轮到了你,却发现你的名字在隔壁人堆里那张纸 ...

  2. 微信小程序开发得会议扫码签到系统

    分享下最近做的一个微信程序会议签到,本系统后台基于ssm(Spring+SpringMVC+MyBatis)开发,前台为小程序开发的会议扫码签到程序,系统以Java作为编程语言,采用Mysql数据库作 ...

  3. 扫码签到系统html,扫码签到.html

     扫码签到 $axure.utils.getTransparentGifPath = function() { return 'resources/images/transparent.gif'; ...

  4. 微信扫码签到系统asp源码写的,并且获取签到者位置信息入库保存

    不管是工作会议,还是员工活动,每次集会基本都需要签到.传统的纸质签到效率低下,找名字费时,排队费时,更可怕的是好不容易轮到了你,却发现你的名字在隔壁人堆里那张纸上. 此代代码的功能是,集会现场只需贴出 ...

  5. 【python】django实现扫码签到

    功能分析 基础学习 实现思路 动手 功能分析 核心需求 能统计到场人员情况 在现场的人可以证明自己在现场 不在现场的人不能证明自己在现场 系统能够辨别和记录收到的证明 系统能保存和显示统计情况 一个基 ...

  6. 使用公开页实现扫码签到功能

    功能描述: 使用白码低代码开发平台的公开页,实现系统里的客户或学生扫描二维码跳转到签到页面,输入手机号码进行签到. 前期准备: 在工作台,系统设置–用户管理中,启用公共用户. 数据表创建:创建一张签到 ...

  7. 基于活动场景签到微会动平台上线发布两款酷炫微信现场扫码签到产品

    移动互联网.智能手机.社交媒体的快速普及,使得以微信为主的移动终端成为展商和观众在互联网搜索引擎外,获取会议等市场活动信息的另一重要入口,也成为了近几年会议企业营销转战的必争之地.微信二维码也以几近简 ...

  8. Php扫码签到功能怎么实现,扫码签到常用方法_云分组小程序

    扫码签到常用方法,云分组小程序,以800人团队为例,学员扫码分组仅需10秒钟. 扫码签到常用方法, 可以检测人员进出方向,对于实时统计会场实际人数的会议非常重要.多媒体电子签到系统是将数字毛笔签名.影 ...

  9. Go语言在扫码支付系统中的成功实践

    今天的内容主要分四个方面.第一,金融支付系统的一些特点;第二,我们的扫码支付系统技术选型;第三,系统迭代过程中的架构演进;第四,与Go相关的一些坑. 金融支付系统的一些特点 图 1 首先从业务流程入手 ...

最新文章

  1. mongod备份还原常用命令
  2. CentOS中怎样安装mysql并修改密码、设置开机启动、配置远程连接
  3. mysql 数据迁移java_使用jdk进行数据迁移(sqlite迁移mysql)
  4. CORS error 状态码451
  5. 【转载】fullpage.js学习
  6. HDU-6341 Problem J. Let Sudoku Rotate(dfs 剪枝)
  7. Angular6笔记之全局组件
  8. 计算机文字处理员,计算机文字录入处理员
  9. cmd的常用命令分类详解
  10. 实用防火与防爆技术培训---第十一讲 可燃固体燃爆特性
  11. Aidl的一个简单学习
  12. 表删除时 Cannot delete or update a parent row: a foreign key constraint fails 异常处理
  13. Python+Vue计算机毕业设计房屋租赁管理系统p8pvy(源码+程序+LW+部署)
  14. switch范围判断、switch区间判断
  15. SVN(Subversion)中文版安装教程
  16. Qt开发-QT Widgets
  17. mstsc登录xubuntu16.04
  18. h5微信f分享链接给对方获取对方手机号_微信生日贺卡链接制作
  19. 网络基础 -- 应用层HTTP协议
  20. CSS Grid 和 Flexbox

热门文章

  1. Excel如何快速隔行插入空行
  2. 物联网智能家居基本方法实现之经典
  3. matlab弹奏旋律(发声)笔记
  4. 【渝粤题库】广东开放大学 风险投资 形成性考核
  5. 用Unity做游戏,你需要深入了解一下IL2CPP
  6. Win10系统如何显示文件夹中的照片缩略图
  7. 微信android视频压缩方案,微信视频压缩怎样实现
  8. 运营笔记:一个新公众号怎么吸粉?看看这位大神怎么做的!
  9. 无法解析服务器的dns地址
  10. 算法:三阶矩阵求逆矩阵算法公式