0

我不确定我是否以完全错误的方式进行此操作,但是在我的 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)
4

1 回答 1

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>

据我了解,没有 JS,无论您创建多少表单,都只会发出一个POST请求。

在您的示例中,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)
于 2013-10-28T19:34:32.457 回答