所以我想根据变量创建动态数量的表单。
这是我的表格。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>
但是该网站是空的,没有表单被呈现。可能是什么问题?
答案 0 :(得分:0)
已解决:
问题出在我的for循环中
缺少“范围”大声笑
for i in range (0, len(c_test_tokens)-1):