Как показать изображение BLOB-объекта на HTML-странице в Django? - PullRequest
3 голосов
/ 14 мая 2019

У меня есть изображение в поле BLOB-объектов в моей базе данных MySQL. Изображения отображаются правильно с помощью базовых клиентов, но я не могу отобразить изображение на 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.b64encode(obj.photo)

    data = {
        'news': News.objects.all(),
        'title': 'Главная страница',
        'imgs' : image_data
    }
    return render(request, 'app/home.html', data)

HTML:

<img src="data:image/jpeg;base64,{{ imgs }}" class="img-thumbnail">

Я получаю строку байтов в "imgs", но она не работает

1 Ответ

1 голос
/ 18 мая 2019

В Python 3 функция base64.b64encode() возвращает закодированные байты, а не строку. Из-за этого ваш URI данных отображается как data:image/jpeg;base64,b'/9j/4AA...', тогда как он должен быть data:image/jpeg;base64,/9j/4AA.... Чтобы это исправить, декодируйте байты в строку, например, используя base64.b64encode(obj.photo).decode().

...