在Django中提交多个表单

时间:2013-10-28 19:25:17

标签: python django forms

我不确定我是否完全以错误的方式进行此操作,但在我的html模板中,我有一个for循环,我想要呈现多个表单,以及一个提交按钮以提交所有表单中的数据:

 {% for i in Attribute_list %}
<form action="/Project/create/" method=post>{% csrf_token %}
{{ i }}:
<input type=text name={{ i }}><br>
<hr>
{% endfor %}
<input type=submit>

这个问题是它只提交最后一个表格。

我遇到的另一个问题是从视图中恢复数据。由于我将表单命名为变量“i”,我不知道如何在我的views.py中“获取”这些数据:

def create_config(request):
    if request.method == 'POST':
        data_list = []
        for data in request.POST.getlist():
            data_list.append(data)

1 个答案:

答案 0 :(得分:0)

你能检查一下吗?

<form action="/Project/create/" method="post">
    {% csrf_token %}
    {% for i in Attribute_list %}
       {{ i }}: <input type="text" name="{{ i }}"><br>
       <hr>
    {% endfor %}
    <input type="submit">
</form>

正如我所理解的那样,无论你创建了多少表单,我们只会创建一个POST请求。

在oyur示例中,HTML无效,因此它可以在不同的浏览器中以不同的方式运行。但是,一旦你没有关闭form,应该提交最后一个。

至于第二部分

def create_config(request):
    if request.method == 'POST':
        data_list = []
        for data in request.POST.getlist():
            data_list.append(data) 

我认为你应该使用你的Attribute_list。或者你可以迭代所有获得的'POST'变量。

def create_config(request):
    if request.method == 'POST':
        data_list = []
        for key in request.POST:
            data_list.append(request.POST[key]) # or .extend(request.POST.getlist(key)