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中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
Python的Django框架中的Context使用
Jul 15 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
基于Python解密仿射密码
Oct 21 Python
python实现俄罗斯方块游戏(改进版)
Mar 13 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
python调用win32接口进行截图的示例
Nov 11 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
python源码剖析之PyObject详解
May 18 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获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
基于JQuery的密码强度验证代码
2010/03/01 Javascript
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
jQuery中on方法使用注意事项详解
2017/02/15 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
python ip正则式
2009/05/07 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
python-web根据元素属性进行定位的方法
2019/12/13 Python
python访问hdfs的操作
2020/06/06 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
Html5新标签解释及用法
2012/02/17 HTML / CSS
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
介绍一下Linux文件的记录形式
2012/04/18 面试题
门卫岗位职责
2013/11/15 职场文书
关于爱情的广播稿
2014/01/16 职场文书
写自荐信的注意事项
2014/03/09 职场文书
会议欢迎词
2015/01/23 职场文书
放牛班的春天观后感
2015/06/01 职场文书