我想在Django中创建一个'填空'类型的测验。
示例问题是“放置答案__和__”。
基本上,我想要一个输出,用输入字段替换“__”字段。
另外,我希望输入字段具有相同的“名称”。例如:
<input id="id_1" type="text" name="blank[]" />
<input id="id_2" type="text" name="blank[]" />
空白字段的数量(可能)是无限的。如何使用django.forms进行解决?
谢谢。
答案 0 :(得分:0)
根据我的理解,您有一个需要渲染测验的字段列表。 列表看起来像这样:
questions = (
('Place your 1 answers %s and %s.', ('field_1_1', 'field_2_2')),
('Place your 2 answers %s and %s.', ('field_2_1', 'field_2_2')),
)
您可以为每个字段创建表单:
class QuizzForm(forms.Form):
def __init__(self, *args, **kwargs):
super(QuizzForm, self).__init__(*args, **kwargs)
for question in questions:
for field in question[1]:
self.fields[field] = forms.ChoiceField()
并且在发布之后访问字段:
if form.is_valid():
for question in questions:
for field in question[1]:
answer = form.cleanded_data.get(field)