在 Django 中,處理單一頁面上的多個表單需要仔細考慮。處理單一表單的典型方法,如下例所示:
if request.method == 'POST': form = AuthorForm(request.POST,) if form.is_valid(): form.save() # do something. else: form = AuthorForm()
在處理多個表單時變得不夠。為了正確解決這種情況,視圖必須確定提交的是哪個表單。
一種方法是為每個表單包含唯一的提交按鈕值。透過解析 POST 數據,視圖可以識別點擊的提交按鈕並處理相應的表單。
例如,考慮兩個帶有提交按鈕的名為 Expectedphraseform 和 Bannedphraseform 的表單分別命名為預期短語和禁止短語。以下程式碼片段說明如何使用提交按鈕值處理多個表單:
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')
透過利用唯一的提交按鈕值,視圖可以有效區分錶單提交並相應地處理預期的表單。
以上是如何在 Django 中處理單一頁面上的多個表單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!