In Django erfordert der Umgang mit mehreren Formularen auf einer einzelnen Seite sorgfältige Überlegung. Der typische Ansatz für die Bearbeitung eines einzelnen Formulars, wie unten beispielhaft dargestellt:
if request.method == 'POST': form = AuthorForm(request.POST,) if form.is_valid(): form.save() # do something. else: form = AuthorForm()
wird bei der Bearbeitung mehrerer Formulare unzureichend. Um dieses Szenario richtig zu bewältigen, muss die Ansicht ermitteln, welches Formular übermittelt wurde.
Ein Ansatz besteht darin, eindeutige Werte für die Schaltfläche „Senden“ für jedes Formular einzubeziehen. Durch das Parsen der POST-Daten kann die Ansicht die angeklickte Absenden-Schaltfläche identifizieren und das entsprechende Formular verarbeiten.
Betrachten Sie beispielsweise zwei Formulare namens „expectedphraseform“ und „bannedphraseform“ mit Absenden-Schaltflächen benannt „expectedphrase“ bzw. „bannedphrase“. Der folgende Codeausschnitt veranschaulicht, wie mit mehreren Formularen mithilfe der Werte der Absendeschaltfläche umgegangen wird:
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')
Durch die Verwendung eindeutiger Absendeschaltflächenwerte kann die Ansicht effektiv zwischen Formularübermittlungen unterscheiden und das beabsichtigte Formular entsprechend verarbeiten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit mehreren Formularen auf einer einzelnen Seite in Django um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!