【发布时间】:2020-11-03 14:25:56
【问题描述】:
我正在创建一个 Matplotlib 图,以在我的 Django 应用程序的 HTML 模板中显示。我将此图发送到 HTML,方法是将其保存在我的静态文件下,然后使用保存的 .png 加载 img 标记。
在获得对图的引用后,我在 views.py 中执行此操作。
# Get analysis visualization chart
figure = analyser.visualize_tweets(emotions)
# Save figure in static folder as png
figure.savefig('static/analysis_figures/figure.png')
# Inject html with figure path
response['analysis_figure_path'] = 'analysis_figures/figure.png'
return render(request, 'landing_page/index.html', response)
我的 HTML 是这样的:
<img src={% static analysis_figure %} alt="">
但是,这会导致RuntimeError: main thread is not in main loop 在我的views.py 中的函数被第二次调用时发生(如果它在一切正常时被调用)。
为了防止这个错误,我将 Matplotlib 图保存到 main() 以在主线程中运行,然后在我的原始函数中调用它。这修复了错误,但阻止了我的 HTML 重新加载,因此每次用户提交查询时,新图形都会显示在前一个图形上,而不会删除前一个图形。
对任何问题有什么想法吗?
【问题讨论】:
标签: python django matplotlib django-templates html-injections