加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在Django中从单个页面处理不同表单的最佳方法是什么?

发布时间:2020-12-20 11:14:58 所属栏目:Python 来源:网络整理
导读:假设我在视图中定义了3种不同的形式: # views.pyform_one = FormOne()form_two = FormTwo()form_three = FormThree() 在我的模板中: form action="" method="post" id="form-one" {{ form_one.as_table }} input type="submit" value="Submit Form One" na
假设我在视图中定义了3种不同的形式:

# views.py
form_one = FormOne()
form_two = FormTwo()
form_three = FormThree()

在我的模板中:

<form action="" method="post" id="form-one">
  {{ form_one.as_table }}
  <input type="submit" value="Submit Form One" name="form-one" />
</form>

<form action="" method="post" id="form-two">
  {{ form_two.as_table }}
  <input type="submit" value="Submit Form Two" name="form-two" />
</form>

<form action="" method="post" id="form-three">
  {{ form_three.as_table }}
  <input type="submit" value="Submit Form Three" name="form-three" />
</form>

假设每个表单都有自己唯一的字段名称,如何从一个视图处理所有3个表单?我在考虑以下方法,但我不确定这是否是解决此问题的最佳方法:

# views.py

if request.method == 'POST':
    request_post = request.POST
    if 'form-one' in request_post:
        form_one = FormOne(request.POST)
    elif 'form-two' in request_post:
        form_two = FormTwo(request.POST)
    else:
        form_three = FormThree(request.POST)
else:
    form_one = FormOne()
    form_two = FormTwo()
    form_three = FormThree()

有什么意见或建议吗?

解决方法

我在一个正在研究的网站上遇到了类似的问题.我现在没有代码,但我认为我在这些方面做了一些事情:

if request.method == 'POST': 
    valid = False
    form = FormOne(request.POST) 
    if form.is_valid():
        #handle case where use submitted FormOne
        valid = True

    form = FormTwo(request.POST) 
    if form.is_valid():
        #handle case where use submitted FormTwo
        valid = True

    form = FormThree(request.POST) 
    if form.is_valid():
        #handle case where use submitted FormThree
        valid = True

    if not valid:
        #handle case where none of the forms were valid

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读