Python 如何在Django中的HTML页面上显示blob图像?
我在mysql数据库的blob字段中有一个图像。使用基本客户端可以正确显示图像,但我无法在html页面中显示图像 我尝试对返回的字节使用base64转换器 models.py:Python 如何在Django中的HTML页面上显示blob图像?,python,django,base64,blob,Python,Django,Base64,Blob,我在mysql数据库的blob字段中有一个图像。使用基本客户端可以正确显示图像,但我无法在html页面中显示图像 我尝试对返回的字节使用base64转换器 models.py: class BlobImg(models.Model): photo = models.TextField(null=True) views.py: def home(request): obj = BlobImg.objects.get(id=1) image_data = base64.b6
class BlobImg(models.Model):
photo = models.TextField(null=True)
views.py:
def home(request):
obj = BlobImg.objects.get(id=1)
image_data = base64.b64encode(obj.photo)
data = {
'news': News.objects.all(),
'title': 'Главная страница',
'imgs' : image_data
}
return render(request, 'app/home.html', data)
html:
我在“imgs”中得到了bytes字符串,但在Python 3中它不起作用,
base64.b64encode()
函数返回编码的字节,而不是字符串。因此,您的数据URI显示为data:image/jpeg;base64,b'/9j/4AA…'
,而它必须是数据:image/jpeg;base64,/9j/4AA…
。要解决此问题,请将字节解码为字符串,例如使用base64.b64encode(obj.photo).decode()
AttributeError:“bytes”对象没有属性“read”,请显示该值。这是一个很长的字节值,如何将其插入消息?obj.photo
值以:b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\开头。。。等。image\u数据
值以:b'/9j/4aaqskzjrgabaqaaaqabad/2wbdaaggbggcgbqghbwcjcqgkdbqnd开始。。。等等,我设法把它应用到一个对象上。我是否可以以任何方式将其应用于查询集,如objects.all()
,并以json格式发送?当然可以。您需要对每个对象应用base64.b64encode(obj.photo).decode()
。
<img src="data:image/jpeg;base64,{{ imgs }}" class="img-thumbnail">