Когда у меня была похожая ситуация, я использовал два представления. Один использовал matplotilb для генерации PNG, а другой использовал шаблоны django для создания HTML-страницы, которая представляла PNG (и некоторые другие данные). Параметр, отправляемый в шаблон, был просто именем файла PNG. Затем другой вид присоединяется к соответствующим URL-адресам .png.
Одна проблема, если вы хотите вычислить некоторые параметры, которые используются как для генерации HTML, так и PNG. Я закодировал такую информацию в имени файла. Это больно и немного хакерски, но также полезно для пользователя, если вся информация находится в имени файла, когда она его сохраняет.