Django: füllen Sie die form aus der get-Methode
Form:
class SearchJobForm(forms.Form):
query = forms.CharField()
types = forms.ModelChoiceField(queryset=JobType.objects.all(), widget=forms.CheckboxSelectMultiple())
Ansicht
def jobs_page(request):
if 'query' in request.GET:
form = SearchJobForm(request.GET)
else:
form = SearchJobForm()
variables = RequestContext(request, {
'form':form,
})
return render_to_response('jobs_page.html', variables)
Nachdem ich das Formular abschicken ich versuchen, um seine Werte wieder in form
form = SearchJobForm(request.GET)
aber es funktioniert nicht(einige Felder verschwinden). Vielleicht ist es, weil der ModelChoiceField. Wie fülle ich das Formular mit seinen Werten mittels get-Methode?
- Es gibt nur zwei Felder, aber Sie sagen, dass "einige Felder verschwinden". Die Felder des Formulars nicht bekommen, besiedelt? Wie werden Sie überprüfen, dass das form-Objekt wird aufgefüllt?
- Sie sollten erwägen, beginnend mit dem Absenden des Formulars im BEITRAG und code ändern auf Wunsch.POST. Wenn das nicht funktioniert, dann können Sie woanders schauen, für die das problem.
- Nur der Absenden-button zeigt sich - die anderen 2 Felder nicht angezeigt(die Felder selbst). Ich kann nicht verwenden Sie den post, denn ich habe die Paginierung und im nicht sicher, wie Sie den Seitenumbruch mit der post.
- Beide
request.POST
undrequest.GET
sind [QueryDicts][1], also entweder funktionieren sollte. Sind Sie sicher, dass der request-Parameter in der Anfrage.BEKOMMEN? Wenn Sieprint request.GET
an der Spitze der views.py es zeigt den Inhalt dort? [1]: docs.djangoproject.com/en/dev/ref/request-response/... - ja, ich kann sehen Inhalt. Zum Beispiel für ?query=d&Typen=1 bekomme ich QueryDict: {u'query': [u 'D'], u'types': [u'1']}, jedoch werden die Felder nicht erscheinen(
- Poste bitte den vollständigen code der view.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie Sie versuchen zu zeigen, ein vor-ausgefüllten Formular an einen Benutzer. Um das zu tun, müssen Sie passieren die ersten argument von der form:
SearchJobForm(initial=request.GET.dict())
Eigentlich könnte Sie posten Sie Ihre gesamte view Methode? Habe es gerade getestet und dabei
form = SearchJobForm(request.GET)
funktioniert einwandfrei. Es hat ein problem an der umliegenden code...
Vom code ich denke, Sie erwarten, dass die Formular-Werte zum Rendern wieder in HTML mit den Werten aufgefüllt, die... Ist, dass, wie Sie versuchen, zu überprüfen, dass das Formular-Objekt aufgefüllt wurde? Das wird nicht funktionieren (und wahrscheinlich nicht, was Sie wollen zu tun, wie auch immer - Sie wollen zum verarbeiten der form-Werte).
Versuchen Sie diese zu Ihrer Ansicht:
Überprüfen, was ausgedruckt.
Sollten Sie wirklich durch dieser Weg die django-docs.
Form Objekte absteigen sollte aus
django.forms.Form
:Den derzeit eingereichten Antworten nicht behandeln Sie das Szenario, in dem eine Liste von Werten übergeben als GET-parameter für einen einzelnen Schlüssel. Unter der Haube, Django verwendet einen MultiValueDict Daten-Struktur, die nicht ein guter Weg, um Werte aus einem Schlüssel, die mehrere Werte. Der code unten kompensiert, dass
Dieser code wurde geschrieben für Klasse basierte Ansichten, aber könnte leicht angenommen, für die Verwendung in funktional basierte Ansichten.