在单个 Django 模板页面上处理多个表单时,识别已提交的表单可能是一个挑战。这个问题解决了这个问题,并提供了使用表单前缀的解决方案。
如果使用单个表单,标准方法是检查请求方法并相应地处理表单:
if request.method == 'POST': form = AuthorForm(request.POST,) if form.is_valid(): form.save() # do something. else: form = AuthorForm()
但是,对于多种表单,在仅接收单个 request.POST 对象的情况下确定要处理哪一种表单可能会很棘手。此问题中提出的解决方案涉及使用表单前缀,允许视图区分表单。
提供的解决方案创建两个表单实例,每个预期表单一个,然后检查 POST 中的提交按钮值数据。通过在表单名称和提交按钮名称中使用前缀,代码可以确定提交的是哪个表单:
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 页面上的多个表单,确保只处理预期的表单并经过验证。
以上是如何在单个 Django 页面上处理多个表单?的详细内容。更多信息请关注PHP中文网其他相关文章!