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 相关文章推荐
Linux下为不同版本python安装第三方库
Aug 31 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
Python字符串的常见操作实例小结
Apr 08 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
python使用python-pptx删除ppt某页实例
Feb 14 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
python数据抓取3种方法总结
Feb 07 Python
python实现简单文件读写函数
Feb 25 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 Python
Pytest allure 命令行参数的使用
Apr 18 Python
Python中的socket网络模块介绍
Jul 23 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遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
js获取视频时长代码
2014/04/10 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
JavaScript事件学习小结(一)事件流
2016/06/09 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
[03:33]TI9战队采访 - Infamous
2019/08/20 DOTA
python切换hosts文件代码示例
2013/12/31 Python
Python输入二维数组方法
2018/04/13 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
python requests.get带header
2020/05/05 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
全球立体声:World Wide Stereo
2018/09/29 全球购物
EJB的激活机制
2013/10/25 面试题
高三地理教学反思
2014/01/11 职场文书
高一家长会邀请函
2014/01/12 职场文书
妇产医师自荐信
2014/01/29 职场文书
高三学习决心书
2014/03/11 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫