0

我在 django 模板中使用 javascript 做一个动态表单。输入的数量取决于用户在地图中所做的点数。当我尝试在视图中获取输入时,我将它们弄乱了。当我看到带有调试的 Post 变量时,变量是排列好的。任何的想法?

模板.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();          
    }

视图.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。我需要按顺序输入!

谢谢!

4

1 回答 1

1

我不知道顺序是什么,但你可以像这样对request.POST字典(标准 Python 字典没有顺序)进行排序:

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)

希望能帮助到你。

于 2013-08-10T13:54:35.193 回答