我是Django的新手,我有一个包含多个表单和提交按钮的页面。如果提交了一个表单,我如何将数据存储在其他表单的字段中?通常,当我提交时,它会重定向到同一页,但如果在字段中键入了某些内容,则会丢失。谢谢。
这是Html
<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脚本中,每个不同的表单都有一些标签,所以我想要做的是,当您提交一个表单的数据时,其余表单字段中的其他数据应该保留,这样用户就不会再次输入或丢失数据。提前谢谢。
在视图中...
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
})到目前为止,它是有效的。谢谢。
发布于 2011-02-03 06:11:04
为了从一个POST中持久化来自多个表单的值,您需要将所有字段放在一个表单中(不使用JavaScript)。
在视图操作中,需要验证每个表单,然后调用它的save方法。
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集合填充的表单的新实例。
发布于 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
https://stackoverflow.com/questions/4880306
复制相似问题