django: Eingabe und Anzeige der Ausgabe auf derselben Seite

8

Ich bin ziemlich neu im Django und versuche etwas sehr Einfaches zu tun. Ich habe ein ModelForm für das folgende Modell:

%Vor%

Und ich zeige dem Benutzer ein einfaches Formular, das dabei hilft:

  • Benutzer wird eine Frage stellen
  • Die Frage wird bearbeitet (eine Datenbankabfrage wird generiert) basierend auf der Frage)

  • Dann sollte das Abfrageergebnis direkt unterhalb des Formulars in der gleiche Seite.

So sieht mein views.py aus:

%Vor%

Im Moment versuche ich einfache Dinge, ich nehme den Wert im Abfragefeld des Formulars und versuche, es zurück auf die Seite zu schicken, bisher bin ich gescheitert. Das ist index.html:

%Vor%

Wenn ich das tun könnte, denke ich, dass die Abfrage stuffs so schwierig sein wird. Das Formular funktioniert gut, die Daten werden in der Datenbank gespeichert. Nur die response -Zeichenfolge von views.py konnte nicht innerhalb von index.html nach der Formularübergabe abgerufen werden. Können Sie mir bitte helfen?

BEARBEITEN: Versucht, in index.html basierend auf Hoffs Antwort zu folgen:

%Vor%

Immer noch kein Glück: (

    
Md. Abdul Munim 12.02.2013, 16:36
quelle

4 Antworten

9

ansichten.py

%Vor%

html

%Vor%     
catherine 12.02.2013, 17:38
quelle
3

Was Sie brauchen, ist ein asynchroner Post (Ajax), der mit jQuery einfach ist. Diese Antwort finden Sie in einer vollständigen Lösung: Wie man ein Django-Formular mit AJAX & amp; jQuery

    
Hoff 12.02.2013 16:42
quelle
1

Nach Hoffs Antwort ...

URL-Attribut zum Ajax-Aufruf hinzufügen:

%Vor%

Einige Ajax-Handler in views.py:

%Vor%

Versucht so etwas?

    
Ogre 12.02.2013 17:51
quelle
1
%Vor%

Sie können überprüfen, ob das Formular gesendet wurde oder nicht (d. h. ob es sich um eine Post-Anfrage handelt oder nicht):

%Vor%

Überprüfen Sie dann in der Vorlage, ob die Kontextvariable post_output existiert, wenn sie die Ausgabe anzeigt:

%Vor%

Kurz gesagt, die Logik ist:
  1. Überprüfen Sie, ob in Ihrer Sicht ein relevanter Schlüssel request.POST dict vorhanden ist.
  2. Wenn der Schlüssel existiert, dann ist es eine Post-Anfrage; Fügen Sie postbezogene Kontextvariablen hinzu und veröffentlichen Sie zugehörige Aufgaben.
  3. Überprüfen Sie, ob eine postbezogene Kontextvariable in der Vorlage verfügbar ist. Wenn ja, zeigen Sie die postbezogene Ausgabe an.

Wenn Sie die Ausgabe nicht anzeigen möchten, wenn die Seite nach einem Beitrag einfach aktualisiert wird, übergeben Sie das request -Objekt an die Vorlage und überprüfen Sie Folgendes:

%Vor%     
Jahid 25.06.2017 16:07
quelle

Tags und Links