1

Ich rendere ein Bild in Django (1.9) Python 2.7.10. Es funktioniert gut.Django Unicode-Fehler beim Rendern von Bild über Vorlage

views.py

canvas = FigureCanvas(fig) 
response = django.http.HttpResponse(content_type='image/png') 
canvas.print_png(response) 
plt.close(fig) 
return response 

Der obige Code immer veröffentlicht das Bild in Browser von Anfang an der Reihe. Ich möchte das Bild an einem neuen Ort im Browser positionieren. Ich habe versucht, die Antwortvariable in einer Vorlage zu übergeben.

views.py

canvas = FigureCanvas(fig) 
response = django.http.HttpResponse(content_type='image/png') 
canvas.print_png(response) 
plt.close(fig) 
context = {'response': response} 
return render(request, 'index.html', context) 

index.html

<div align="center" style="text-align:center;">{{ response }} </div> 

Das Problem hier ist, erhalte ich die Fehlermeldung:

'utf8' codec can't decode byte 0x89 in position 27: invalid start byte. You passed in HttpResponse status_code=200, "image/png" (class 'django.http.response.HttpResponse')

Antwort

0

Sie benötigen eine eigene URL für Ihre Ansicht einzurichten (man beachte dies der Ansicht sein kann, dass Sie das aufgelistet haben funktioniert), fügen Sie in urls.py:

url('^show_graph/$', yourview, name="show_graph"), 
hinzu

Dann können Sie dieses Bild in Ihrem html zeigen, indem sie in index.html setzen:

<img src={% url "show_graph" %} height="400" width="400"> 
+0

mir Fehler „Tag Start ist nicht geschlossen“ geben was url hier ist, ist es eine Variable? – utkarsh

+0

URL ist der Django TemplateTag: https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#url - für den Fehler - überprüfen Sie bitte die Interpunktion und wihte Leerzeichen in Ihrer Vorlage. Der Code sollte wie angegeben funktionieren. –

+0

Vielen Dank für Hilfe, aber Bild zeigt noch nicht ... eine leere Seite – utkarsh

Verwandte Themen