如何在单个 Django 页面上处理多个表单?

Barbara Streisand
发布: 2024-11-19 04:22:02
原创
762 人浏览过

How Can I Handle Multiple Forms on a Single Django Page?

在单个 Django 页面上处理多个表单

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板