2015-07-28 45 views
0

我使用Django在服务器端执行一些脚本,并使用窗体来获取参数。在Django窗体中的字段顺序

我按照我需要这些参数的顺序定义我的表单,并按照该顺序呈现它。问题是,当我提交表单是不是为了使脚本执行像发送:

./script参数3参数1参数

,而不是

./script参数1参数参数3

每个表单都有不同的字段,我只有一种方法来执行它们。所以我取除csrftoken等这样的所有字段:

for arg in request.POST: 
args.append(request.POST.get(arg)) 

,然后执行使用

command.extend(args) 

我曾试图与定义在forms.py顺序

self.fields.keyOrder = ['parameter1','parameter2','parameter3'] 

但我认为它只适用于渲染时的排序。无论如何要控制提交发送数据的顺序吗?

在此先感谢

+4

' request.POST'是一个字典,并没有顺序。 –

+0

按照顺序建议您尝试通过它们的数组索引来引用它们,这很少是最好的想法,为什么不将这些参数作为字典包含在内? – Sayse

+0

我该怎么做?我不明白你的意思@Sayse – Sergiodiaz53

回答

0

如果你想保持字段的顺序,不要用表来发表的数据。

考虑在列表中使用AJAX张贴JSON和puting领域:

// You can compose such a JSON string by extracting the fields with jQuery 
var field1_obj = { 
    name:"field1", 
    value: $("#field1").value() 
} 
var field2_obj = { 
    name:"field2", 
    value: $("#field2").value() 
} 
var payload = {data:[field1_obj, field2_obj]} 
var payload_json = JSON.stringify(payload) 
// JSON string 
{data: [{name: "field1", value:"val1"}, {name: "field1", value:"val1"}]} 
// Post it to server 
$.post(url, payload_json ...) 

在服务器端,这是很微不足道的JSON字符串加载到一个Python字典:

import json 
form = json.loads(request.body) 
相关问题