2
當用戶點擊上傳按鈕上傳他們的csv時,我的網站應該返回一個matplotlib圖。我將情節保存到緩衝區,現在只需要在上傳按鈕所在的頁面顯示。在django網站中嵌入matplotlib圖
我是一個初學者的Django所以下面是我做的(警告:一些僞提前)
在views.py是的,我可以看到,通過plotResult(request, csvfile_path)
返回的httprequest
不與互動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圖出現嵌入在同一頁面上?