【发布时间】:2016-05-04 09:50:23
【问题描述】:
我无法从以下 POST 表单中获取正确的数据:
view.py
queryset=ExampleT.objects.filter(id=var_id).order_by('value1')
form = HiddenForm(initial={'ids': [o.id for o in queryset]})
return render(request, 'test.html', {'form': form})
form.py
class HiddenForm(forms.Form):
ids = forms.MultipleChoiceField(widget=forms.MultipleHiddenInput())
输出:
<input id="id_ids_0" name="ids" type="hidden" value="10" />
<input id="id_ids_1" name="ids" type="hidden" value="1" />
<input id="id_ids_2" name="ids" type="hidden" value="2" />
这是request.POST的值:
<QueryDict: {u'csrfmiddlewaretoken': [u'g2ktgFpDA5aa3BK2Baaes2nAexxKKh4Y'], u'ids': [u'1', u'2', u'10']}>
如何在数组中获取 3 个值,可能按 [10, 1, 2] 的顺序?
我试过这段代码,但它只返回一个值:
var_for=request.POST.get('ids')
for tmp_var in range(len(var_for)):
print var_for[tmp_var]
【问题讨论】:
-
您使用的是
request.POST.get(),只会返回一个值。要返回值列表,您需要request.POST.getlist('ids')。但是,最好从表单的已清理数据中获取值,如下面的答案所示。
标签: django django-forms django-templates django-views