django传递变量

时间:2013-08-10 10:47:25

标签: django django-forms django-templates

我在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。我需要输入顺序!

谢谢!

1 个答案:

答案 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)

希望它有所帮助。