我有一个模板页面,需要两种形式。如果我仅使用一种形式,则可以像下面的典型示例一样正常:
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')
两种形式的操作中放入不同的URL。然后,你将具有两个不同的视图函数来处理两种不同的形式。
从POST数据中读取提交按钮的值。你可以确定单击了哪个提交按钮:如何构建多个Django提交按钮?