我有一个视图,获取“.svg
”的entry_nr
图像(不用担心这个),看起来有点像这样:
def svg_image(request, entry_nr):
svg_string = utils.DrawSVG.get_svg(entry_nr)
return HttpResponse(svg_string)
这样的网址就是:
url(r'^images/(?P<entry_nr>[0-9]+)/$', views.svg_image, name='svg_image')
当我在浏览器中为给定的entry_nr
加载网址时,我可以看到.svg
- 它有效。但出于某种原因,当我刷新页面时,图像消失了,我必须重新启动服务器才能再次看到它。
为什么会这样?
最终,使用.svg
将<img src="/location/images/{{memb.EntryNr}}>"
加载到模板中(其中memb.EntryNr
是entry_nr
),现在图像根本不加载。我假设这是出于同样的原因。
编辑: get_svg
函数使用第三方python库的render
函数呈现.svg
,然后返回字符串。 render
函数需要一个文件保存到:
def get_svg(renderable_object):
t = tempfile.NamedTemporaryFile(suffix=".svg")
renderable_object.render(t.name)
t.file.seek(0)
svg_string = t.read()
t.close()
return svg_string
此外,当我刷新entry_nr
页面时(如上所述),我在终端上多次收到此消息:QObject::startTimer: QTimer can only be used with threads started with QThread