背景: 我从 Django 开始,对 Python 的经验有限,所以请多多包涵。我编写了一个 Python 脚本,它定期运行(在 cron 作业中)将数据存储到 SQLite3 数据库中,我想从中读取并使用 Matplotlib(更具体地说,使用 Basemap)生成图像。这始于对学习 Python 和构建一个足够“有趣”的项目的兴趣。我之所以选择 Django 框架,是因为它的文档似乎相当完善,尽管我对 web.py 感到惊喜,因为它的要求是“轻量级”的(但是 web.py 的稀疏文档使它开始变得有点困难) ; 但目前,我还没有完全死心于一个框架。
问题 1874642中的示例几乎是我正在寻找的,它可以即时生成图像,而无需将其写入磁盘(因此必须定期清理生成的文件)。
但是,我不清楚如何将生成的图像合并到模板中,而不是让浏览器简单地显示图像。从教程材料中,我猜应该可以将包含在某些中的变量表示django.template.Context
为django.http.HttpResponse
.
所以我要问的是:
是否有必要
print_png
在生成的 MatplotlibFigureCanvas
对象上调用 a ?或者是FigureCanvas
复制的“未打印”到上下文,以便在 Django 模板中我明确地编写 HTMLimg
标签并手动放置标签的属性?我的印象是我必须将 Canvas 写入磁盘(即执行 a
canvas.print_figure("image.png")
),以便 HTMLimg
标记在 Django 模板中看到它。但我想确定没有“更易于管理的方式”——即在Context
并让模板“神奇地”生成它。如果确实需要写入磁盘,我想我可以使用 Django 的文件系统缓存工具以某种方式写入生成的图像(当然,检查是否已经为给定的输入参数集写入了图像)。我欢迎您在这方面提出建议,因为目前尚不清楚将生成的图像的大小和数量,因此我希望避免花费磁盘空间,而是更喜欢等待生成图像(即使需要几秒钟)。
先感谢您。