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警察与小偷的实现之一客户端与服务端通信实例
Oct 09 Python
深入理解Python 代码优化详解
Oct 27 Python
Python中使用摄像头实现简单的延时摄影技术
Mar 27 Python
利用Python的Django框架中的ORM建立查询API
Apr 20 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
Python学习小技巧之列表项的拼接
May 20 Python
python实现简易版计算器
Jun 22 Python
python在每个字符后添加空格的实例
May 07 Python
详解如何为eclipse安装合适版本的python插件pydev
Nov 04 Python
python 求定积分和不定积分示例
Nov 20 Python
利用python3 的pygame模块实现塔防游戏
Dec 30 Python
TensorFlow 显存使用机制详解
Feb 03 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正则验证Email的方法
2015/06/15 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
2011/09/20 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
JavaScript Sort 的一个错误用法示例
2015/03/20 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
python Pygame的具体使用讲解
2017/11/03 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
python基于win32api实现键盘输入
2020/12/09 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
职员竞岗演讲稿
2014/05/14 职场文书
电子商务专业自荐信
2014/06/02 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
工厂采购员岗位职责
2015/04/07 职场文书