Django:动态创建表单数量

时间:2018-12-03 18:15:57

标签: python django django-forms django-views

所以我想根据变量创建动态数量的表单。

这是我的表格。py

class CTestform(forms.Form):
    def __init__(self, c_test_tokens, *args, **kwargs):
        super(CTestform, self).__init__(*args, **kwargs)
        wordsbeforegap = ''
        iteratorforgaps = 0

        for i in (0, len(c_test_tokens)-1):
            if '#GAP#' not in c_test_tokens[i]:
                wordsbeforegap = wordsbeforegap + c_test_tokens[i]

            else:
                self.fields[iteratorforgaps] = forms.CharField(widget=forms.TextInput(attrs={'size': '5'}),
                                                    required=False, label=wordsbeforegap, label_suffix='')
                wordsbeforegap = ''
                iteratorforgaps += 1

这是我的views.py,我在其中调用CTestform进行渲染:

def ctest(request):
    # this function is not really important for the question
    # c_test_tokens = list of chars
    c_test_tokens, gaps, tokenindexe = generate_c_test(exampletext())

    form = CTestform(c_test_tokens=c_test_tokens)
    return render(request, 'ctest.html', {'form': form})

我认为创建的表单将位于self.fields中,因此要在我的网站上打印表单,模板如下:

<div class="ctest">
    {%  for forms in form.fields %}
        {{ forms }}
        {%  endfor %}
    </div>

但是该网站是空的,没有表单被呈现。可能是什么问题?

1 个答案:

答案 0 :(得分:0)

已解决

问题出在我的for循环中

缺少“范围”大声笑

for i in range (0, len(c_test_tokens)-1):