Я создаю фигуру Matplotlib для отображения в шаблоне HTML в моем приложении Django. Я отправляю этот рисунок в HTML, сохраняя его под моими статическими файлами, а затем загружая тег img
с сохраненным .png
.
Я делаю это в моем 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, поэтому каждый раз, когда пользователь отправляет запрос, новая фигура отображается поверх предыдущей без удаления предыдущей.
Есть идеи по любой из проблем?