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 相关文章推荐
以windows service方式运行Python程序的方法
Jun 03 Python
python读写ini配置文件方法实例分析
Jun 30 Python
Python实现批量下载图片的方法
Jul 08 Python
利用Python获取操作系统信息实例
Sep 02 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
Python生成器generator用法示例
Aug 10 Python
pandas之分组groupby()的使用整理与总结
Jun 18 Python
在keras里实现自定义上采样层
Jun 28 Python
Pytorch 使用tensor特定条件判断索引
Apr 08 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
global.php
2006/12/09 PHP
php自定文件保存session的方法
2014/12/10 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
浅探express路由和中间件的实现
2019/09/30 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Empty test suite.(PyCharm程序运行错误的解决方法)
2018/11/30 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
python移位运算的实现
2019/07/15 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
python中有函数重载吗
2020/05/28 Python
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
店长助理岗位职责
2013/12/13 职场文书
仓库组长岗位职责
2014/01/29 职场文书
食品安全承诺书范文
2014/08/29 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
毕业生个人总结
2015/02/28 职场文书
结婚通知短信大全
2015/04/17 职场文书
员工离职通知函
2015/04/25 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python
python如何读取和存储dict()与.json格式文件
2022/06/25 Python