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使用线程封装的一个简单定时器类实例
May 16 Python
Python用UUID库生成唯一ID的方法示例
Dec 15 Python
Python实现简单的HttpServer服务器示例
Sep 25 Python
python3库numpy数组属性的查看方法
Apr 17 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
如何基于Python实现电子邮件的发送
Dec 16 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
NumPy排序的实现
Jan 21 Python
详解python with 上下文管理器
Sep 02 Python
用Python将库打包发布到pypi
Apr 13 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
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
javascript求日期差的方法
2016/03/02 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
python发送伪造的arp请求
2014/01/09 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
Pycharm修改python路径过程图解
2020/05/22 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
库房主管岗位职责
2013/12/31 职场文书
求职意向书
2014/04/01 职场文书
艺术节主持词
2014/04/02 职场文书
七夕情人节促销方案
2014/06/07 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
总账会计岗位职责
2015/04/02 职场文书
青年志愿者活动感想
2015/08/07 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript