Wie kann ich mehrere Formulare auf einer einzelnen Django-Seite verarbeiten?

Barbara Streisand
Freigeben: 2024-11-19 04:22:02
Original
762 Leute haben es durchsucht

How Can I Handle Multiple Forms on a Single Django Page?

Umgang mit mehreren Formularen auf einer einzigen Django-Seite

Wenn Sie mit mehreren Formularen auf einer einzigen Django-Vorlagenseite arbeiten, kann es eine Herausforderung sein, herauszufinden, welches Formular übermittelt wurde. Diese Frage befasst sich mit dem Problem und bietet eine Lösung mithilfe von Formularpräfixen.

Wenn ein einzelnes Formular verwendet wird, besteht der Standardansatz darin, die Anforderungsmethode zu überprüfen und das Formular entsprechend zu verarbeiten:

if request.method == 'POST':
    form = AuthorForm(request.POST,)
    if form.is_valid():
        form.save()
        # do something.
else:
    form = AuthorForm()
Nach dem Login kopieren

Bei mehreren Formularen kann es jedoch schwierig sein, zu bestimmen, welches verarbeitet werden soll, während nur ein einziges request.POST-Objekt empfangen wird. Die in dieser Frage vorgeschlagene Lösung umfasst die Verwendung von Formularpräfixen, die es der Ansicht ermöglichen, zwischen den Formularen zu unterscheiden.

Die bereitgestellte Lösung erstellt zwei Formularinstanzen, eine für jedes erwartete Formular, und überprüft dann die Werte der Senden-Schaltfläche im POST Daten. Durch die Verwendung von Präfixen in den Formularnamen und den Namen der Senden-Schaltflächen kann der Code bestimmen, welches Formular gesendet wurde:

if request.method == 'POST':
    if 'bannedphrase' in request.POST:
        bannedphraseform = BannedPhraseForm(request.POST, prefix='banned')
        if bannedphraseform.is_valid():
            bannedphraseform.save()
        expectedphraseform = ExpectedPhraseForm(prefix='expected')
    elif 'expectedphrase' in request.POST:
        expectedphraseform = ExpectedPhraseForm(request.POST, prefix='expected')
        if expectedphraseform.is_valid():
            expectedphraseform.save() 
        bannedphraseform = BannedPhraseForm(prefix='banned')
else:
    bannedphraseform = BannedPhraseForm(prefix='banned')
    expectedphraseform = ExpectedPhraseForm(prefix='expected')
Nach dem Login kopieren

Dieser Ansatz verarbeitet effektiv mehrere Formulare auf einer einzigen Django-Seite und stellt sicher, dass nur das beabsichtigte Formular verarbeitet wird und validiert.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere Formulare auf einer einzelnen Django-Seite verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage