Python及Django框架生成二维码的方法分析


Posted in Python onJanuary 31, 2018

本文实例讲述了Python及Django框架生成二维码的方法。分享给大家供大家参考,具体如下:

一、包的安装和简单使用

1.1 用Python来生成二维码很简单,可以看 qrcode 这个包:

pip install qrcode

qrcode 依赖 Image 这个包:

pip install Image

如果这个包安装有困难,可选纯Python的包来实现此功能,见下文。

1.2 安装后就可以使用了,这个程序带了一个 qr 命令:

qr 'http://www.ziqiangxuetang.com' > test.png

1.3 下面我们看一下如何在 代码 中使用

import qrcode
img = qrcode.make('http://www.tuweizhong.com')
# img <qrcode.image.pil.PilImage object at 0x1044ed9d0>
with open('test.png', 'wb') as f:
  img.save(f)

这样就可以生成一个带有网址的二维码,但是这样得把文件保存到硬盘中。

【备注】:纯Python的包的使用:

安装:

pip install git+git://github.com/ojii/pymaging.git#egg=pymaging
pip install git+git://github.com/ojii/pymaging-png.git#egg=pymaging-png

使用方法大致相同,命令行上:

qr --factory=pymaging "Some text" > test.png

Python中调用:

import qrcode
from qrcode.image.pure import PymagingImage
img = qrcode.make('Some data here', image_factory=PymagingImage)

二、Django 中使用

我们可以用 Django 直接把生成的内容返回到网页,以下是操作过程:

2.1 新建一个 zqxtqrcode 项目,tools 应用:

django-admin.py startproject zqxtqrcode
python manage.py startapp tools

2.2 将 tools 应用 添加到 项目 settings.py 中

INSTALLED_APPS = (
  ...
  'tools',
)

2.3 我们修改 tools/views.py

from django.http import HttpResponse
import qrcode
from cStringIO import StringIO
def generate_qrcode(request, data):
  img = qrcode.make(data)
  buf = StringIO()
  img.save(buf)
  image_stream = buf.getvalue()
  response = HttpResponse(image_stream, content_type="image/png")
  response['Last-Modified'] = 'Mon, 27 Apr 2015 02:05:03 GMT'
  response['Cache-Control'] = 'max-age=31536000'
  return response

上面对返回结果进行了处理,浏览器会缓存图片,提高再次加载的速度。Cache-Control 和 Last-Modified 不懂的可以看一下 HTTP协议 相关知识。

2.4 添加视图函数到 zqxtqrcode/urls.py

url(r'^qrcode/(.+)$', 'tools.views.generate_qrcode', name='qrcode'),

2.5 同步数据库,打开开发服务器:

python manage.py syncdb
python manage.py runserver

参考:https://pypi.python.org/pypi/qrcode/

Python 相关文章推荐
Python实现的百度站长自动URL提交小工具
Jun 27 Python
100行Python代码实现自动抢火车票(附源码)
Jan 11 Python
解决python爬虫中有中文的url问题
May 11 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
python读写csv文件方法详细总结
Jul 05 Python
django 配置阿里云OSS存储media文件的例子
Aug 20 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 Python
python tkinter canvas使用实例
Nov 04 Python
Python自动采集微信联系人的实现示例
Feb 28 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
Python进阶之尾递归的用法实例
Jan 31 #Python
简单的python协同过滤程序实例代码
Jan 31 #Python
Python进阶之递归函数的用法及其示例
Jan 31 #Python
Python tkinter事件高级用法实例
Jan 31 #Python
pyqt5自定义信号实例解析
Jan 31 #Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 #Python
pyqt5简介及安装方法介绍
Jan 31 #Python
You might like
精通php的十大要点(上)
2009/02/04 PHP
php存储过程调用实例代码
2013/02/03 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
基于jQuery实现网页打印功能
2015/12/01 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
Python 12306抢火车票脚本
2018/02/07 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
python format 格式化输出方法
2018/07/16 Python
Python解析微信dat文件的方法
2020/11/30 Python
使用django自带的user做外键的方法
2020/11/30 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
学校食堂采购员岗位职责
2013/12/05 职场文书
信访工作者先进事迹
2014/01/17 职场文书
竞聘书格式及范文
2014/03/31 职场文书
优秀学生干部先进事迹材料
2014/05/26 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
安徽导游词
2015/02/12 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书