在 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中文网其他相关文章!