如何从Django的同一表单字段中获取所有输入? 表单字段在HTML中处于循环中,因此出现了不止一次

问题描述

我试图从同一个表单字段获取所有输入,该表单字段在HTML中显示两次,因为它处于循环状态(如本例所示)。有办法吗?下面是代码

HTML

def home(request):
    nums = [[3,"",2,7,5,6,1,4,9],[1,3,9,8],[6,8,5],[2,7],[4,2],[7,6],[5,4],[8,1],[9,3]]
    context = {'nums': nums}

    if request.method == "POST":
        form = SForm(request.POST)
        context['form'] = form
        if form.is_valid():
            num = form.cleaned_data.get('num')
    else:
        form = SForm()
        context['form'] = form

    context['range'] = range(9)
    return render(request,'s/home.html',context)

Forms.py

class SForm(forms.Form):
    num = forms.IntegerField(min_value=0,max_value=9,label=False)

HTML.py

{% block content %}
<form method="POST" name="s_form">
  {% csrf_token %}
    {% for row in nums %}
      <tr>
        {% for col in row %}
        {% if forloop.counter0|divisibleby:"9" %}
          <br>
        {% endif %}
        {% if col != "" %}
        <span id="{{ forloop.parentloop.counter0 }} - {{ forloop.counter0 }}">{{ col }}</span>
        {% else %}
        <span id="{{ forloop.parentloop.counter0 }} - {{ forloop.counter0 }}">{{ form }}</span>
        {% endif %}
        {% endfor %}
      </tr>
    {% endfor %}

  <div class="container"><button class="btn btn-dark" type="submit" name="button">Submit</button></div>
</form>
{{ num }}
{% endblock %}

但是,我看到的问题是该表单被视为一个表单。输入完输入后,两个整数字段将返回相同的值。(以下屏幕截图)

enter image description here

(发布前)

enter image description here

(发布后)

任何人都知道如何从同一个字段中获得两个输入值。或者是否有使用多个字段的方法?提前非常感谢您!

解决方法

您可以将“前缀” arg用于表单实例

选中此answer