[django]用requests从url获取图片(数据类型是bytes)后如何在template中显示出来
今天在做一个注册页面的时候遇到了一个验证码图片在页面显示的问题。
我用requests从一个url上获取到一张图片, 没有保存到本地, 而是想直接作为render的字典参数,传到页面里进行渲染。因为requests.get(url)得到的response.content是bytes, 无法像jpg等本地图片文件直接加到<img src="">中,
我的代码是这样的:
def get_captcha(request):
CAPTCHA_URL = "http://jw.qdu.edu.cn/academic/getCaptcha.do"
session = requests.session()
image = session.get(CAPTCHA_URL)
request.session['JSESSIONID'] = session.cookies['JSESSIONID']
print type(image.content)
return image.content def register(request):
if request.method == "GET":
captcha = get_captcha(request)
return render(request, 'student/register.html', {'captcha': captcha})
Html代码是这样的register.html
<input type="captcha" id="captcha" name="captcha" placeholder="请输入验证码">
<img src="{{ captcha }}" />
百思不得其解,上网也没有查阅到相关的信息。
最后求助了django方面很牛逼的一个学长, 他告诉我要对response.content进行base64编码, 然后就可以渲染到页面上去。加入了base64编码之后,可是图片依然显示不出来
def register(request):
if request.method == "GET":
captcha = get_captcha(request)
captcha = b64encode(captcha)
return render(request, 'student/register.html', {'captcha': captcha})
想到是否是在html页面中的代码不对, 之后在网上查阅信息才得知, 经过base64编码的图片在html的<img>标签显示时,需要添加一些属性,即下面的data:image/jpeg;base64。 感谢博文:在浏览器中使用Base64编码的图像
<input type="captcha" id="captcha" name="captcha" placeholder="请输入验证码">
<img src="data:image/jpeg;base64,{{ captcha }}" />
终于可以显示了。
[django]用requests从url获取图片(数据类型是bytes)后如何在template中显示出来的更多相关文章
- iOS根据Url 获取图片尺寸
iOS根据Url 获取图片尺寸 // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL { NSURL* URL = nil; if([i ...
- 根据Url 获取图片尺寸 iOS
// 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL { NSURL* URL = nil; if([imageURL ...
- iOS开发——根据Url 获取图片尺寸
转自:http://www.oschina.net/code/snippet_2248391_53038 // 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:( ...
- 根据URL获取图片
背景:今天因为生产环境的系统界面图片无法显示被领导叼了一波,之前用Hutool工具类解析URL获取图片的,在生产环境上跑了一个多月都正常,嘣,今天突然发现周六下午后的图片统统显示异常,之后改为用jav ...
- C# url获取图片流转字符串
//http url获取图片流转字符串 //string url = serverUrl.TrimEnd('/') + PUrl; //WebRequest request = WebRequest. ...
- 通过url获取图片尺寸的几种方法:JS和php
首先是js的方法,通过new一个Image对象,设置src属性,并监听complete和onload事件,图片加载完成后输出图片的宽度和高度 function checkPicurl(url){ va ...
- 使用Python和OpenCV通过网址URL获取图片
在OpenCV中通过图片的URL地址获取图片: # -*- coding: utf-8 -*- import numpy as np import urllib import cv2 # URL到图片 ...
- 根据图片URL获取图片的尺寸【Swift语言实现】
import UIKit extension UIImage { /// 获取网络图片尺寸 /// /// - Parameter url: 网络图片链接 /// - Returns: 图片尺寸siz ...
- 从URL获取图片并保存到本地
/// <summary> /// HttpWebRequest Property /// </summary> /// <param name="fileNa ...
随机推荐
- git 忽视大小写
git config core.ignorecase false http://stackoverflow.com/questions/3011625/git-mv-and-only-change-c ...
- C#中获得机器的字符编码webName信息
在一次解决编码的问题过程中,发现Encoding.GetEncoding("GB2312") == Encoding.GetEncoding("GBK"),到底 ...
- 2016 Multi-University Training Contest 2 - 1005 Eureka
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5738 题目大意:给定平面上的n个点,一个集合合法当且仅当集合中存在一对点u,v,对于集合中任意点w,均 ...
- Go Data Structures: Interfaces
refer:http://research.swtch.com/interfaces Go Data Structures: Interfaces Posted on Tuesday, Decembe ...
- 博客代码:iframe—网页中嵌入其他网页
iframe 是一个可以把另外一个网页嵌入到一个网页里的代码,非常有用.对于一个内容不错的网页,要方便地把它搬到自己的博客里,用这个代码最合适.而对于在新浪博客里不支持的一些网页效果和代码,可先把他们 ...
- 简单又高效的Access分页语句
转自:http://www.ljf.cn/archives/2281 Access实现分页其实也可以在查询语句里面做. 除了流行的top分页法之外,其实还有一种更简单,更容易理解,并且效率也不低的分页 ...
- Promise.race
[Promise.race] 返回最先完成的promise var p1 = new Promise(function(resolve, reject) { setTimeout(resolve, 5 ...
- Elasticsearch mapping
//设置mapping Put: http://192.168.1.102:9200/indexName { "settings": { , }, "mappings&q ...
- iOS架构基础
1.概念:架构其实是一个设计上的东西,它可以小到类类之间的交互,可以大到不痛的模块之间,可以说不痛的业务部门之间的交互都可以从架构的层面去理解它. 2.解耦 方法一:代理 方法二:通知
- Java基础知识系列——数组
数组是我们在编程中常用到的一种数据结构. 数组创建有三种方式,以int类型为例: 1.int value[] = new int[]{1,2,3,4,5}; //{}中的是元素 2.int value ...