在Django中在一个页面上处理多个表单的正确方法
我有一个期待两种形式的模板页面。如果我只使用一个表单,那么就像这个典型的例子一样好:
if request.method == 'POST': form = AuthorForm(request.POST,) if form.is_valid(): form.save() # do something.else: form = AuthorForm()
但是,如果我想使用多个表单,我如何让视图知道我只提交其中一个表单而不是另一个表单(即它仍然是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')
慕婉清6462132