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设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
Python实现两个list对应元素相减操作示例
Jun 09 Python
简单了解python模块概念
Jan 11 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
Python基于多线程实现ping扫描功能示例
Jul 23 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 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
对Session和Cookie的区分与解释
2007/03/16 PHP
PHP操作Memcache实例介绍
2013/06/14 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
基于jquery的动态创建表格的插件
2011/04/05 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
JavaScript 变量,数据类型基础实例详解【变量、字符串、数组、对象等】
2020/01/04 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
python实现定时同步本机与北京时间的方法
2015/03/24 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
python实现K最近邻算法
2018/01/29 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
Marriott国际:万豪国际酒店查询预订
2017/09/25 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
项目经理任命书范本
2014/06/05 职场文书
铅球加油稿100字
2014/09/26 职场文书