python - Django:如何使用模板渲染图像

标签 python django cairo pycairo cairoplot

目标:我想使用模板显示生成的 .png 图像。

我使用了示例 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 View 会显示一个漂亮的饼图。不过,我想使用模板来呈现它,这样我就可以在结果页面中添加更多数据(标签、描述、标题和其他 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,因为创建时 response 变量不存在c.

创建图像并将其传递给模板进行渲染的正确方法是什么?

最佳答案

既然您已经有了一个可以将图像创建为 png 的工作 gen_chart View ,为什么不直接添加一个

<img src='{% url "gen_chart" %}' /> 

到您的 HTML 模板并正常渲染它?你想让你的生活变得困难吗?

关于python - Django:如何使用模板渲染图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981691/

相关文章:

gtk - 在 GtkDrawingArea draw_callback 之外访问 Cairo 上下文

animation - GtkDrawingArea/cairo 视觉故障

python - 优雅而高效地替换 pandas 列中的多个术语

python - 如何从列中删除 NaN

python - 我可以从 GraphQL 模式生成 REST 服务吗?

python - 使用 django 和 gunicorn 进行代理

multithreading - gdk_window_invalidate_rect 未发送绘制事件

python - 如何在 django admin 中创建分组下拉列表?

python - 有没有办法使用 get_dummies() 即时预处理(分割)元素?

python - 摆脱 Django IOErrors