目标:我想使用模板显示生成的.png图像。Django:如何使用模板渲染图像
我与示例here一起工作。下面是代码从例如最后段:
def gen_chart(request):
...
pp = CairoPlot.PiePlot(surface, data, heigth, width, background = None, gradient = True, shadow = True, series_colors = colors)
pp.render()
response = HttpResponse(mimetype="image/png")
pp.surface.write_to_png(response)
return response
访问gen_chart
视图显示了一个相当饼图。但是,我想使用模板进行渲染,因此我可以在生成的页面(标签,说明,标题和其他html内容)中添加更多数据。
我找到了一个相关的解决方案here。在该解决方案中,建议做这样的事情:
c = RequestContext(request,{'result':json.dumps(result)})
t = Template("{{result}}") # A dummy template
response = HttpResponse(t.render(c), mimetype = u'application/json')
return response
我尝试如下,以适应代码:
c = RequestContext(request, {'result': pp.surface.write_to_png(response)})
t = Template('test_app/pie_chart_template.html')
response = HttpResponse(t.render(c), mimetype="image/png")
return response
但正如你可能已经猜到了,我遇到了错误UnboundLocalError: local variable 'response' referenced before assignment
,因为在创建c
时,response
变量不存在。
创建图像并将其传递给模板进行渲染的正确方法是什么?
将它保存到一个文件,并使用img标签....或将您的view_chart网址作为src在img标签 –