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获取豆瓣电影简介代码分享
Jan 16 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 Python
python实现报表自动化详解
Nov 16 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
python中使用psutil查看内存占用的情况
Jun 11 Python
Python多进程写入同一文件的方法
Jan 14 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
Nov 25 Python
python 基于opencv实现高斯平滑
Dec 18 Python
PyQt5中QSpinBox计数器的实现
Jan 18 Python
Django如何与Ajax交互
Apr 29 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 MVC
2014/09/10 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
解决laravel资源加载路径设置的问题
2019/10/14 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
浅谈Python的文件类型
2016/05/30 Python
关于反爬虫的一些简单总结
2017/12/13 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
成教自我鉴定
2013/10/27 职场文书
自主招生自荐信指南
2014/02/04 职场文书
春节请假条
2014/04/11 职场文书
环境整治工作方案
2014/05/18 职场文书
国庆横幅标语
2014/10/08 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
新闻稿格式范文
2015/07/18 职场文书
公司借款担保书
2015/09/22 职场文书
党校培训学习心得体会
2016/01/06 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python