将动态生成的图像渲染到Django模板?

时间:2015-11-16 00:21:58

标签: python django python-imaging-library httpresponse

我一直在寻找这个并尝试在其他答案中实施多个解决方案,但是没有成功这样做。

使用以下方法成功获取图像的HTTPResponse

frontier_plot_data = Image.open("plot.png")
# serialize to HTTP response
frontier_plot = imgResponse(frontier_plot_data)
return(frontier_plot)

imgResponse的功能:

def imgResponse(valid_image):
    try:
        with open(valid_image, "rb") as f:
            return HttpResponse(f.read(), content_type="image/jpeg")
    except:
        red = Image.new('RGBA', (1, 1), (255,0,0,0))
        response = HttpResponse(content_type="image/jpeg")
        red.save(response, "JPEG")
        return response

我将frontier_plot返回到views.py并将其传递到上下文中:

context = {"form": form, "frontier_plot": frontier_plot}

然后我尝试使用此行在我的template HTML文件中呈现它,我已将其用于常规HTML字符串:

{{ frontier_plot }}

这不是静态图像,而是由流程保存然后生成的图像。它总是被覆盖到plot.png

我已经阅读了一些关于使用URL引用和Django渲染功能的内容,但我不确定实现。

我不认为我可以创建一个单独的视图来查看这个图,因为虽然我已经简化了这个问题,但实际上这个过程中有多个返回的图。

0 个答案:

没有答案