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数组条件过滤filter函数使用示例
Jul 22 Python
Python创建文件和追加文件内容实例
Oct 21 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
flask中过滤器的使用详解
Aug 01 Python
Python3.5 处理文本txt,删除不需要的行方法
Dec 10 Python
PyTorch搭建多项式回归模型(三)
May 22 Python
PyQT5 emit 和 connect的用法详解
Dec 13 Python
Python 去除字符串中指定字符串
Mar 05 Python
python打包生成so文件的实现
Oct 30 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
destoon设置自定义搜索的方法
2014/06/21 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
jQuery使用方法
2017/02/04 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
python 运算符 供重载参考
2009/06/11 Python
pygame播放音乐的方法
2015/05/19 Python
Python中GeoJson和bokeh-1的使用讲解
2019/01/03 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
linux下进程间通信的方式
2014/12/23 面试题
求职推荐信范文
2013/12/01 职场文书
施工安全协议书
2013/12/11 职场文书
粗加工管理制度
2014/02/04 职场文书
十一酒店活动方案
2014/02/20 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
公司委托书范本
2014/04/04 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
大二学生自我检讨书
2014/10/23 职场文书
趣味运动会新闻稿
2015/07/17 职场文书