首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django多个表单,并在提交后保留字段数据输入

Django多个表单,并在提交后保留字段数据输入
EN

Stack Overflow用户
提问于 2011-02-03 05:53:37
回答 2查看 8.9K关注 0票数 2

我是Django的新手,我有一个包含多个表单和提交按钮的页面。如果提交了一个表单,我如何将数据存储在其他表单的字段中?通常,当我提交时,它会重定向到同一页,但如果在字段中键入了某些内容,则会丢失。谢谢。

这是Html

代码语言:javascript
复制
<head>
    <title>Hello</title>
    <link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}/static/tabs.css"  />
</head>
<body>
     <h1>Informacion</h1>
     <ol id="toc">
     <li><a href="#page-1"><span>Page 1</span></a></li>
     <li><a href="#page-2"><span>Page 2</span></a></li>
     <li><a href="#page-3"><span>Page 3</span></a></li>
 <li><a href="#page-4"><span>Page 4</span></a></li>
     </ol>
     <div class="content" id="page-1">
        <h2>Page 1</h2>
        <p>Text...</p>
    <form action="." method="POST">{% csrf_token %}
        <table>
    {{ form1.as_table }}
        </table>
        <p><input type="submit" value="Submit"></p>
        </form>
      </div>
      <div class="content" id="page-2">
         <h2>Page 2</h2>
         <p>Text...</p>
         <form action="." method="POST">{% csrf_token %}
     <table>
     </table>
     <p><input type="submit" value="Submit"></p>
         </form>
      </div>
      <div class="content" id="page-3">
         <h2>Page 3</h2>
         <p>Text...</p>
     <form action="." method="POST">{% csrf_token %}
     <table>
     {{ form2.as_table}}
     </table>
     <p><input type="submit" value="Submit"></p>
         </form>
     </div>
     <div class="content" id="page-4">
     <h2>Busqueda</h2>
     <form action="." method="POST">{% csrf_token %}
     <table>
     {{ form2.as_table}}
     </table>
     <p><input type="submit" value="S"></p>

     </div> 
     <script src="{{ MEDIA_URL}}/static/activatables.js" type="text/javascript"></script>
     <script type="text/javascript">
     activatables('page', ['page-1', 'page-2', 'page-3','page-4']);
     </script>

     </body>

在java脚本中,每个不同的表单都有一些标签,所以我想要做的是,当您提交一个表单的数据时,其余表单字段中的其他数据应该保留,这样用户就不会再次输入或丢失数据。提前谢谢。

在视图中...

代码语言:javascript
复制
if request.method == 'GET':
    form1 = HcGinecoForm()
    form2 = HolaForm()
else:
    form1 = HcGinecoForm(request.POST)
    form2 = HolaForm(request.POST)
    if form1.is_valid and form2.is_valid():
        form1.save()
        form2.save()
return render_to_response('polls/hola.html',{
                           'form2':form2,
                           'form1':form1
                           })

到目前为止,它是有效的。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-03 06:11:04

为了从一个POST中持久化来自多个表单的值,您需要将所有字段放在一个表单中(不使用JavaScript)。

在视图操作中,需要验证每个表单,然后调用它的save方法。

代码语言:javascript
复制
def my_page(request):
    if request.method == 'GET':
        form1 = Form1()
        form2 = Form2()
        form3 = Form3()
    else:
        form1 = Form1(request.POST)
        form2 = Form2(request.POST)
        form3 = Form3(request.POST)

        if form1.is_valid() and form2.is_valid() and form3.is_valid():
          form1.save()
          form2.save()
          form3.save()
    return render_to_response('my_page.html',
          {'form1' : form1, 'form2' : form2, 'form3' : form3})

当发布到此操作时,在发布之后将保留输入到这些表单中的任何表单中的值。如果不希望保留这些值,则需要创建不是从request.POST集合填充的表单的新实例。

票数 4
EN

Stack Overflow用户

发布于 2011-02-03 06:10:41

Jaime,请发布一些代码片段。

如果您有不同的<form></form>元素,那么您实际上不会从其他<form>向服务器传递任何POST数据,因此没有办法保留这些数据。

考虑将表单合并到一个<form>块中。

对于多个django表单,您可以通过使用表单构造函数的prefix参数来确保没有名称冲突。

前缀:http://docs.djangoproject.com/en/dev/ref/forms/api/#prefixes-for-forms

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4880306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档