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根据距离和时长计算配速示例
Feb 16 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
浅谈Python爬取网页的编码处理
Nov 04 Python
python进阶_浅谈面向对象进阶
Aug 17 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
查看django版本的方法分享
May 14 Python
python3 读取Excel表格中的数据
Oct 16 Python
python清除字符串前后空格函数的方法
Oct 21 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
Sep 16 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
Django如何批量创建Model
Sep 01 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 24 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函数
2010/01/11 PHP
PHP常用数组函数介绍
2014/07/28 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python对象转JSON字符串的方法
2016/04/27 Python
Python numpy 常用函数总结
2017/12/07 Python
pandas object格式转float64格式的方法
2018/04/10 Python
Python3中详解fabfile的编写
2018/06/24 Python
Python字典的核心底层原理讲解
2019/01/24 Python
python实现静态服务器
2019/09/05 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
村干部培训方案
2014/05/02 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
干部外出学习心得体会
2016/01/18 职场文书
导游词之扬州大明寺
2019/10/09 职场文书