Как использовать изображения Matplotlib в шаблонах Django?

Фон:Я начинаю с Django и имею ограниченный опыт работы с Python, поэтому, пожалуйста, поддержите меня. Я написал скрипт Python, который периодически запускается (в задании cron )для хранения данных в базе данных SQLite3, из которой я хотел бы читать и генерировать изображения с помощью Matplotlib (, точнее, с помощью Basemap. ). Это началось как интерес к изучению Python и созданию достаточно «интересного» проекта. Я выбираю фреймворк Django, потому что он достаточно -хорошо документирован,хотя я был приятно удивлен web.py из-за его «легкости» в своих требованиях (, но скудная документация web.py затрудняет начало работы с ); но на данный момент я еще не совсем умер -на каркасе.

Пример в вопрос 1874642 - это почти то, что я ищу, с изображением, генерируемым на -мухе -без необходимости записи его на диск (и, следовательно, иметь дело с периодической очисткой сгенерированных файлов ).

Однако мне непонятно, как сгенерированное изображение может быть включено в шаблон, вместо того, чтобы браузер просто показывал изображение. Из учебного материала я предполагаю, что должна быть возможность представить переменные, включенные в некоторые django.template.Context, в django.http.HttpResponse, но указанный пример сокращает это, отвечая непосредственно с объектом Mime вместо создания его с помощью контекста..

Так что я прошу:

  1. Нужно ли вызывать print_pngдля сгенерированного объекта Matplotlib FigureCanvas? Или FigureCanvasкопируется «ненапечатано» в контекст, поэтому в шаблоне Django я явно пишу тег HTML imgи вручную помещаю атрибуты тега?

  2. У меня сложилось впечатление, что мне нужно записать Canvas на диск (, т.е. выполнитьcanvas.print_figure("image.png")), чтобы HTML-тег imgувидел его в шаблоне Django. Но я хочу быть уверен, что не существует «более управляемого способа» --, то есть передачи изображения в Contextи создания шаблона «волшебным образом». Если запись на диск действительно необходима, я полагаю, я мог бы использовать средство кэширования файловой системы Django для записи сгенерированных изображений каким-то образом (, проверяя, конечно, было ли уже записано изображение для заданного набора входных параметров ). Я приветствую ваши предложения по этому поводу, поскольку в настоящее время еще не ясно размер и количество изображений, которые будут созданы,поэтому я стараюсь не тратить дисковое пространство и вместо этого предпочитаю ждать, пока будет сгенерировано изображение (, даже если это займет несколько секунд ).

Заранее спасибо.

5
задан Community 23 May 2017 в 11:54
поделиться