在Django中在一個(gè)頁(yè)面上處理多個(gè)表單的正確方法我有一個(gè)期待兩種形式的模板頁(yè)面。如果我只使用一個(gè)表單,那么就像這個(gè)典型的例子一樣好:if request.method == 'POST':
form = AuthorForm(request.POST,)
if form.is_valid():
form.save()
# do something.else:
form = AuthorForm()但是,如果我想使用多個(gè)表單,我如何讓視圖知道我只提交其中一個(gè)表單而不是另一個(gè)表單(即它仍然是request.POST但我只想處理提交的表單事情)嗎?這是該解決方案基于這樣的答案expectedphrase和bannedphrase是不同形式和不同的提交按鈕的名稱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')
3 回答

慕婉清6462132
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
你有幾個(gè)選擇:
在兩個(gè)表單的操作中放入不同的URL。然后你將有兩個(gè)不同的視圖函數(shù)來(lái)處理兩種不同的形式。
從POST數(shù)據(jù)中讀取提交按鈕值。您可以判斷單擊了哪個(gè)提交按鈕:如何構(gòu)建多個(gè)提交按鈕django表單?
添加回答
舉報(bào)
0/150
提交
取消