Когда пользователь нажимает кнопку загрузки, чтобы загрузить свой csv, мой сайт должен вернуть график matplotlib. У меня есть сюжет, сохраненный в буфере, и теперь ему просто нужно отобразить на той же странице, что и кнопка загрузки.Внедрение графика matplotlib в пределах сайта django
Я новичок в Django, так что следующее, что я сделал (предупреждение: некоторые псевдокоды вперед)
В views.py и да я могу видеть, что httprequest
возвращаемый plotResult(request, csvfile_path)
не взаимодействует с list.html
. Я не уверен, как получить его
def list(request):
#Working code for uploading a csv and retrieving the path to the uploaded file
if document uploaded:
return plotResult(request, csvfile_path)
return render(
request,
'list.html',
{'documents': documents, 'form': form}
)
def plotResult(request, sorted_dir):
# Bunch of code for computing the plot - functions in custom_script.py
return Plot_Composite_metrics(bunch of parameters)
Plot_Composite_metrics находится в custom_script.py, который находится в том же каталоге, views.py и содержит множество функций для вычисления участка:
def Plot_Composite_metrics(bunch of parameters):
# More code for computing the plot
ax = plt.subplot2grid((3,4), (0,0), colspan=4)
# Code for adding attributes to ax.
# Store the now built image in a string buffer
buffer = StringIO.StringIO()
canvas = pylab.get_current_fig_manager().canvas
canvas.draw()
pilImage = PIL.Image.fromstring("RGB", canvas.get_width_height(), canvas.tostring_rgb())
pilImage.save(buffer, "PNG")
pylab.cose()
return HttpResponse(buffer.getvalue(), mimetype="image/png")
в list.html у меня есть то, что мне нужно, чтобы создать функциональные возможности загрузки, следующие для получения Matplotlib участка:
<img src="data:image/png;base64,{{graphic|safe}}">
Когда я запускаю это, нет сбоя, тег img сверху сначала имеет свой пустой наполнитель. Затем после загрузки веб-сайт возвращает сюжет, но на собственной странице, а не на теге img под кнопкой загрузки. Как сделать так, чтобы график matplotlib появился на одной странице?
Если случайно зная, что сюжет выглядит очень важно, здесь: