Отображение изображения в Django

У меня есть следующий код, который должен вывести изображение.

from email.mime import image
from django.http import HttpResponse
import datetime
from django.template.loader import render_to_string
import base64

import math
import random
import matplotlib.pyplot as plt

no_of_balls = 25
x = [random.triangular() for i in range(no_of_balls)]
y = [random.gauss(0.5, 0.25) for i in range(no_of_balls)]
colors = [random.randint(1, 4) for i in range(no_of_balls)]
areas = [math.pi * random.randint(5, 15)**2 for i in range(no_of_balls)]

plt.figure()
plt.scatter(x, y, s=areas, c=colors, alpha=0.85)
plt.axis([0.0, 1.0, 0.0, 1.0])
plt.xlabel("X")
plt.ylabel("Y")
plt.savefig('test.png')

# with open("test.png", "rb") as image:
#     b64string = base64.b64encode(image.read())

 
 
def math_is_fun(request):
    now = datetime.datetime.now()
    with open("test.png", "rb") as image:
        b64string = base64.b64encode(image.read())
    with open('encode.bin', "wb") as file:
        file.write(b64string)

    # file = open('encode.bin', 'rb')
    # byte = file.read()
    # file.close()
    
    # decodeit = open('test.png', 'wb')
    # decodeit.write(base64.b64decode((byte)))
    # decodeit.close()
    context = {
        'time'  : now, 
        'image' : decodeit,
    }
    
    HTML_STRING = render_to_string("home-view.html", context = context)
    return HttpResponse(HTML_STRING)

Просто немного предыстории. Я создал изображение из некоторой математической формулы и сохранил его на диск. Затем, поскольку я использую render_to_string в представлениях django, я предположил, что изображение должно быть преобразовано в строку. Что я и сделал, используя base64.

У меня возникают трудности с рендерингом этого изображения. Когда страница загружается, я получаю только это May 25, 2022, 9:30 p.m. <_io.BufferedWriter name='test.png'> Подскажите, пожалуйста, как я могу преобразовать это изображение обратно из строки и отобразить его?

Функция home-view ссылается на следующее:

<html>
    <head>
        {{time}} {{image}}

    </head>
</html>
Вернуться на верх