Django – sammeln von daten aus einem HTML <select>

Ich habe ein paar Dokumente gesehen, wie man die Daten aus einer HTML-Anweisung in Django sammeln konnte, aber keiner von ihnen war mir sehr klar. Hat jemand ein echtes Arbeitsbeispiel zu teilen?

In meinem Fall habe ich so etwas in meiner Vorlagendatei:

<select title="my_options"> <option value="1">Select value 1</option> <option value="2">Select value 2</option> </select> 

Was passiert in den views.py, um den ausgewählten Wert zu sammeln? Vielen Dank!

2 Solutions collect form web for “Django – sammeln von daten aus einem HTML <select>”

Wenn es eine GET-Anfrage ist, request.GET['my_options'] . Wenn es ein POST ist, dann request.POST['my_options'] . Dies ist ein String, entweder "1" oder "2" (oder "<script>alert('I hacked you!')</script>" )

So oder so, es ist wahrscheinlich besser, die Django Formulare Framework verwenden , um Ihnen die Mühe des Schreibens der HTML, und die Desinfektion der zurückgegebenen Werte zu speichern.

Verwalten von Daten über POST

 def yourView(request): # Use '.get('id', None)' in case you don't receive it, avoid getting error selected_option = request.POST.get('my_options', None) if selected_option: # Do what you need with the variable 

Eine Sache, die nützlich sein kann mit Formen in Django ist, verschiedene Dinge zu machen, wenn Sie einen POST auf die URL machen oder einfach nur laden:

 def yourView(request): if request.POST: # If this is true, the view received POST selected_option = request.POST.get('my_options', None) if selected_option: # Do what you need to do with the variables return render_to_response(...) return render_to_response(...) 

Es gibt 2 render_to_response falls du verschiedene Dinge machen musst, wenn die Ansicht gerade geladen oder ein POST erhalten würde.

Verwalten von Daten über GET

 def yourView(request): # Use '.get('id', None)' in case you don't receive it, avoid getting error selected_option = request.GET.get('my_options', None) if selected_option: # Do what you need with the variable 
  • Django-Einstellung für Standard-Template-Tag-Ausgabe, wenn Variable None ist?
  • Reverse für '*' mit Argumenten '()' und Keyword-Argumente '{}' nicht gefunden
  • Django kann keine Vorlage finden
  • Django ValueError: ungültiges Literal für int () mit base 10: ''
  • Wie bekomme ich Website-Name in django-cms-Vorlage?
  • Wie bekomme ich Objekt von PK in Django Vorlage?
  • Django-Vorlage kann CSS-Dateien nicht sehen
  • Django: Parse JSON in meiner Vorlage mit Javascript
  • Innen für Schleife, wenn Bedingung nicht in django arbeitet
  • Verwenden Sie `Mit` Tag, um einen Booleschen in Django-Vorlage zu invertieren?
  • Django-Vorlage existiert nicht Fehler, obwohl es zeigt 'Datei existiert'
  • Python ist die beste Programmiersprache der Welt.