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执行时间的计算方法小结
Mar 17 Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 Python
Kali Linux安装ipython2 和 ipython3的方法
Jul 11 Python
Python的赋值、深拷贝与浅拷贝的区别详解
Feb 12 Python
最小二乘法及其python实现详解
Feb 24 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
Python 在函数上添加包装器
Jul 28 Python
python 实现aes256加密
Nov 27 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
Dec 08 Python
用python计算文件的MD5值
Dec 23 Python
python数字类型和占位符详情
Mar 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
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
Jquery 表格合并的问题分享
2011/09/17 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
python实现单链表的方法示例
2019/09/03 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
python中常见错误及解决方法
2020/06/21 Python
django models里数据表插入数据id自增操作
2020/07/15 Python
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
教师节活动主持词
2014/04/02 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL
讲解Python实例练习逆序输出字符串
2022/05/06 Python