[django]用requests从url获取图片(数据类型是bytes)后如何在template中显示出来

今天在做一个注册页面的时候遇到了一个验证码图片在页面显示的问题。

我用requests从一个url上获取到一张图片, 没有保存到本地, 而是想直接作为render的字典参数,传到页面里进行渲染。因为requests.get(url)得到的response.content是bytes, 无法像jpg等本地图片文件直接加到<img src="">中,

我的代码是这样的:

 1 def get_captcha(request):
 2     CAPTCHA_URL = "http://jw.qdu.edu.cn/academic/getCaptcha.do"
 3     session = requests.session()
 4     image = session.get(CAPTCHA_URL)
 5     request.session[‘JSESSIONID‘] = session.cookies[‘JSESSIONID‘]
 6     print type(image.content)
 7     return image.content
 8
 9 def register(request):
10     if request.method == "GET":
11         captcha = get_captcha(request)
12         return render(request, ‘student/register.html‘, {‘captcha‘: captcha})

Html代码是这样的register.html

1 <input type="captcha" id="captcha" name="captcha" placeholder="请输入验证码">
2 <img src="{{ captcha }}" />

百思不得其解,上网也没有查阅到相关的信息。

最后求助了django方面很牛逼的一个学长, 他告诉我要对response.content进行base64编码, 然后就可以渲染到页面上去。加入了base64编码之后,可是图片依然显示不出来

1 def register(request):
2     if request.method == "GET":
3         captcha = get_captcha(request)
4         captcha = b64encode(captcha)
5         return render(request, ‘student/register.html‘, {‘captcha‘: captcha})

想到是否是在html页面中的代码不对, 之后在网上查阅信息才得知, 经过base64编码的图片在html的<img>标签显示时,需要添加一些属性,即下面的data:image/jpeg;base64。 感谢博文:在浏览器中使用Base64编码的图像

1 <input type="captcha" id="captcha" name="captcha" placeholder="请输入验证码">
2 <img src="data:image/jpeg;base64,{{ captcha }}" />

终于可以显示了。

[django]用requests从url获取图片(数据类型是bytes)后如何在template中显示出来

时间: 2024-10-20 21:04:39

[django]用requests从url获取图片(数据类型是bytes)后如何在template中显示出来的相关文章

根据Url 获取图片尺寸 iOS

// 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL {     NSURL* URL = nil;     if([imageURL isKindOfClass:[NSURL class]]){         URL = imageURL;     }     if([imageURL isKindOfClass:[NSString class]]){         URL = [NSURL URLWithString:ima

iOS根据Url 获取图片尺寸

// 根据图片url获取图片尺寸 +(CGSize)getImageSizeWithURL:(id)imageURL { NSURL* URL = nil; if([imageURL isKindOfClass:[NSURL class]]){ URL = imageURL; } if([imageURL isKindOfClass:[NSString class]]){ URL = [NSURL URLWithString:imageURL]; } if(URL == nil) return

C# url获取图片流转字符串

//http url获取图片流转字符串 //string url = serverUrl.TrimEnd('/') + PUrl; //WebRequest request = WebRequest.Create(url); //WebResponse response = request.GetResponse(); //Stream stream = response.GetResponseStream(); //byte[] byteFile = null; //List<byte> b

根据URL获取图片

背景:今天因为生产环境的系统界面图片无法显示被领导叼了一波,之前用Hutool工具类解析URL获取图片的,在生产环境上跑了一个多月都正常,嘣,今天突然发现周六下午后的图片统统显示异常,之后改为用java原始HttpConnection的方式解析URL获取图片OK. 简单的说下项目的业务逻辑&我当事人的想法: 1.首先,这个URL图片地址是项目上游合作伙伴通过消息队列发送给我的,然后我再把URL转为base64,接着把转好的base64上传到一个文件存储服务器中,这时可以通过Key和Object的

iOS开发中,获取图片之后保存或下载到本地相册中

#pragma mark 先获取本地图片或者网络图片 - (void)saveHeaderImageWith:(NSString *)path { UIImage *img = [UIImage imageWithContentsOfFile:path]; //这里img也可以是从网络获取的图片 [self saveImageToPhotos:img]; } #pragma mark 保存图片 - (void)saveImageToPhotos:(UIImage*)savedImage { UI

通过url动态获取图片大小方法总结

很多时候再项目中,我们往往需要先获取图片的大小再加载图片,但是某些特定场景,如用过cocos2d-js的人都知道,在它那里只能按比例缩放大小,是无法设置指定大小的图片的,这就是cocos2d-js 的坑了,我们必须先获取图片大小,计算比例再对图片进行缩放. 查阅资料,我总结了两种通过url获取图片大小的方法: 1.预加载获取图片大小 var imgLoad = function (url, callback) { var img = new Image(); img.src = url; if

Python2.7 基于bs4与requests库的网页图片简单爬取

爬虫入门新手,自学笔记,如果理解有错误请指正. import requests from bs4 import BeautifulSoup import urllib url = 'http://www.nipic.com/index.html' #图片网站 data = requests.get(url) #获取网站响应 soup = BeautifulSoup(data.text,'html.parser') #解析 imgs = soup.find_all('img') Beautiful

获取图片并保存

获取某一个网站的图片信息需要用到requests模块,所以我们需要安装requests 安装 pip install requests # 直接安装 pip install -i https://pypi.doubanio.com/simple/ requests # 指定地址安装 测试是否安装成功 import requests # 回车不报错就算安装成功 response = requests.get("https://www.baidu.com") print(response.

ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结

相册 iphone的相册包含摄像头胶卷+用户计算机同步的部分照片.用户可以通过UIImagePickerController类提供的交互对话框来从相册中选择图像.但是,注意:相册中的图片机器路径无法直接从应用程序访问,只能通过终端用户去选择和使用相册图片 应用程序包 应用程序包可能会将图像与可执行程序.Info.plist文件和其他资源一同存储.我们可以通过本地文件路径来读取这些基于包的图像并在应用程序中显示它们. 沙盒 借助沙盒,我们可以把图片存储到Documents.Library.tmp文