Wie kann man das erzeugte Bild für den Benutzer basierend auf Formulareingabe in Django anzeigen?

Ich generiere derzeit ein Bild über matplotlib mit den Eigenschaften eines Objekts und bin in der Lage, eine Ansicht zu erstellen, die das Bild in einer HttpResponse anzeigt. Ich habe das folgende Snippet verwendet, um dies zu tun: http://wiki.scipy.org/Cookbook/Matplotlib/Django . Ich habe auch meine URLs konfiguriert, um das Bild zu generieren und anzuzeigen, wenn ich auf domain.com/objectID.png navigiere

Im Moment möchte ich ein Formular erstellen, dessen Eingaben verwendet werden, um ein Bild aus Matplotlib zu erzeugen. Dann möchte ich dieses generierte Bild an den Benutzer auf der gleichen Seite des Formulars zurückgeben.

Wie soll ich die Eingaben des Formulars an meinen Matplotlib-Bildgenerator weitergeben und dann das daraus resultierende Bild an den Benutzer zurückgeben?

Vielen Dank für Ihre Hilfe.

Freundliche Grüße

EDIT 1: Ich war auf der Suche nach einer Lösung, und ich glaube, ich würde das Bild wie folgt in meiner Vorlage anzeigen. Nicht sicher, wie man die Variable "img" aber füttert:

{% if img %} <img border="0" alt="My Generated Image" src="{{ img }}" /> {% endif %} 

2 Solutions collect form web for “Wie kann man das erzeugte Bild für den Benutzer basierend auf Formulareingabe in Django anzeigen?”

Angenommen, Sie wollen ein einfaches Diagramm / Bild erstellen, nachdem ein Benutzer die x und y -Koordinaten eingegeben hat.

Bedarf:

  1. JQuery
  2. JQuery Form Plugin

HTML:

 <form method="POST" action="/generate-image/" id="GenImgForm"> <input type="text" name="x-coordinate" /> <input type="text" name="y-coordinate" /> </form> <!-- Make an empty div where the returned image will be shown --> <div id="ShowImage"></div> <script type="text/javascript" src="/static/path/to/jquery.js"></script> <script type="text/javascript" src="/static/path/to/jquery.form.js"></script> <script type="text/javascript"> $(document).ready(function() { var options = { target: '#ShowImage', }; $("#GenImgForm").ajaxForm(options); return false; }); </script> 

Views.py:

Nun, in Ihren views , müssen Sie diesem Ansatz folgen:

  1. Generiere ein Bild mit matplotlib .
  2. Speichern Sie es als StringIO Objekt.
  3. Kodiere das StringIO Objekt auf base64 .
  4. Schicken Sie es an den Kunden zurück.

Werfen Sie einen Blick auf diese Frage .

 import cStringIO # use import io in Python 3x # import base64 Use this in Python 3x def generate_image(request): if request.method == 'POST': x_coord = request.POST['x-coordinate'] y_coord = request.POST['y-coordinate'] # generate a matplotlib image, (I don't know how to do that) sio = cStringIO.StringIO() # use io.StringIO() in Python 3x pyplot.savefig(sio, format="PNG") encoded_img = sio.getvalue().encode('Base64') # On Python 3x, use base64.b64encode(sio.getvalue()) return HttpResponse('<img src="data:image/png;base64,%s" />' %encoded_img) else: # Do something ... 

Sie müssten eine AJAX-Anfrage an den Server machen, um eine URL über Javascript zu bedienen (evtl. mit Hilfe einer Bibliothek wie jQuery). Die Anforderung würde die Daten in der Form weitergeben und einen Link zum entsprechenden Bild zurückgeben.

  • Wie kann ich Matplotlib in den ipdb-Debugger in Spyder (oder einem anderen Debugger) ziehen?
  • Matplotlib - Benutzer gibt numerische Eingabe durch Abbildung ein
  • Python Matplotlib - wie man Werte auf y-Achse angibt?
  • So stellen Sie 'auto' für die obere Grenze ein, aber halten Sie eine feste untere Grenze mit matplotlib.pyplot
  • Holen Sie sich Datenpunkte von Seaborn distplot
  • Python: Ist es möglich, die Linienfarbe in einem Plot zu ändern, wenn ein bestimmter Bereich überschritten wird?
  • Glatte Linie mit Spline und datetime Objekten funktioniert nicht
  • Problem beim Importieren von matplotlib.mlab und .pyplot in python 2.7 auf Mac OSX 10.6
  • Grundbeispiel für PCA mit Matplotlib
  • Matplotlib savefig performance, sparen mehrere pngs in loop
  • Matplotlib - Hebe eine Farbe an, die einem Wert in einer "Farbleiste" zugeordnet ist
  • Python ist die beste Programmiersprache der Welt.