我在django模板中使用javascript做一个动态表单。输入的数量取决于用户在地图中创建的点数。当我试图在视图中获取输入时,我让它们变得混乱。当我通过debug看到Post变量时,会安排变量。有什么想法吗?
template.html
function getCoordinates(){
var i = 0
form = document.getElementById('frm');
for (var i=0; i<points_l.length; i++){
inp=document.createElement('input');
inp.type='hidden';
inp.value=coord_l[i].lon+","+coord_l[i].lat;//setAttribute('value',coord_l[i]);
inp.id='inp_'+i;
inp.name = 'inp_'+i;
form.appendChild(inp);
}
form.submit();
}
views.py
for k, v in request.POST.iteritems():
if k.startswith('inp'):
elems = v.split(',')
lon = ''.join(elems[-1:])
lat = ''.join(elems[:-1])
coordinates_l.append(lat)
coordinates_l.append(lon)
如果我有5个输入,使用for循环我按此顺序获取输入:inp_3,inp_4,inp_5,inp_1,inp_2。我需要输入顺序!
谢谢!
答案 0 :(得分:1)
我不知道订单是什么,但您可以对request.POST
dict(标准Python dicts没有订单)进行排序,如下所示:
for k, v in sorted(request.POST.iteritems()):
if k.startswith('inp'):
elems = v.split(',')
lon = ''.join(elems[-1:])
lat = ''.join(elems[:-1])
coordinates_l.append(lat)
coordinates_l.append(lon)
希望它有所帮助。