我有一个模板页需要两个表单。如果我只使用一种形式,情况就很好,如以下典型示例所示:
如果request.method==“POST”:
form=AuthorForm(request.POST,)
如果form.is_有效():
form.save()
#做点什么。
其他:
form=AuthorForm()
但是,如果我想处理多个表单,如何让视图知道我只提交了其中一个表单,而没有提交另一个表单(即,它仍然是request.POST,但我只想处理提交的表单)
这是基于答案的解决方案,其中ExpectedPhase和bannedphrase是不同表单的提交按钮名称,expectedphraseform和bannedphraseform是表单
如果request.method==“POST”:
如果request.POST中有“banndphrase”:
bannedphraseform=bannedphraseform(request.POST,前缀='banked')
如果bannedphraseform.is_有效():
bannedphraseform.save()
expectedphraseform=expectedphraseform(前缀='expected')
request.POST中的elif'expectedphrase':
expectedphraseform=expectedphraseform(request.POST,前缀='expected')
如果expectedphraseform.is_有效():
expectedphraseform.save()
bannedphraseform=bannedphraseform(前缀为“禁止”)
其他:
bannedphraseform=bannedphraseform(前缀为“禁止”)
expectedphraseform=expectedphraseform(前缀='expected')
您有几个选择:
-
在两个表单的操作中放置不同的URL。然后您将有两个不同的视图函数来处理这两种不同的表单
-
从POST数据中读取提交按钮值。您可以知道单击了哪个提交按钮:如何构建多个提交按钮django表单