Übergeben Sie einen Anfangswert an ein Django-Formularfeld

8

Django-Newbie-Frage ....

Ich versuche, ein Suchformular zu schreiben und den Status des Eingabefeldes zwischen der Suchanfrage und den Suchergebnissen zu pflegen.

Hier ist mein Formular:

%Vor%

Und hier ist mein Ansichten-Code:

%Vor%

Aber das gibt mir den Fehler:

%Vor%

Wie kann ich den Anfangswert übergeben? Verschiedene Dinge, die ich versucht habe, scheinen den Parameter request.POST zu stören.

    
AP257 10.12.2009, 17:29
quelle

2 Antworten

9

Mehrere Dinge sind hier nicht gut ...

1) Nach einem POST wird empfohlen, umzuleiten. Dies vermeidet das berüchtigte Popup, dass Sie das Formular erneut senden, wenn Sie die Zurück-Schaltfläche verwenden.

2) Sie müssen nicht if request.method == 'POST' , nur if request.POST sagen. Das macht Ihren Code leichter zu lesen.

3) Die Ansicht sieht im Allgemeinen so aus:

%Vor%

Das soll nicht heißen, dass es keine viel einfacheren und viel komplizierteren Ansichten geben kann. Aber das ist der Kern einer Ansicht: Wenn Anfrage ist Postprozess das Formular und Redirect; wenn Anfrage erhalten wird, render das Formular.

Ich weiß nicht, warum Sie einen Unicode-Fehler bekommen. Ich kann nur denken, dass es sich um eines deiner Modelle handelt, die du nicht zur Verfügung stellst. Der Fehler, wie Spookylukey Erwähnungen in seinem Kommentar ist, wird höchstwahrscheinlich verursacht, indem Sie eine Zeichenfolge anstelle eines Diktats an den Anfangsparameter senden.

Ich empfehle wirklich die django Dokumentation, in insbesondere dem Tutorial. , aber Es gibt auch das sehr schöne Django Buch .

Alles was gesagt wird, ich denke du willst etwas wie:

%Vor%

Beachten Sie, dass der Parameter zu initial ein Diktat der Feldwerte Ihres Formulars ist.

Ich hoffe, das hilft.

    
cethegeek 10.12.2009, 17:50
quelle
5

Django-Formulare sind für Ihren Anwendungsfall nicht besonders hilfreich. Für eine Suchseite ist es außerdem viel besser, ein GET-Formular zu verwenden und den Status in der URL beizubehalten. Der folgende Code ist viel kürzer, einfacher und entspricht weit besser den HTTP-Standards:

%Vor%

Die Vorlage:

%Vor%     
spookylukey 10.12.2009 18:11
quelle

Tags und Links