我正在使用Django在服务器端执行一些脚本,我正在使用表单来获取参数。
我按照我需要这些参数的顺序定义表单,然后按顺序呈现它。问题在于,当我提交表单时,它会在没有该顺序的情况下发送,因此脚本执行如下操作:
./ script parameter3 parameter1 parameter2
而不是
./ script parameter1 parameter2 parameter3
每个表单都有不同的字段,我只有一个方法来执行它们。所以我采取除csrftoken之外的所有字段,所以这样:
for arg in request.POST:
args.append(request.POST.get(arg))
然后使用
执行command.extend(args)
我尝试使用
在forms.py中定义顺序 self.fields.keyOrder = ['parameter1','parameter2','parameter3']
但我认为它只适用于渲染时的排序。无论如何都要控制提交发送数据的顺序吗?
提前致谢
答案 0 :(得分:0)
If you want to maintain the order of fields, don't use form to post data.
Consider posting JSON with AJAX, and puting the fields in a list:
// 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 ...)
On server side, it is pretty trivial to load the json string into a python dictionary:
import json
form = json.loads(request.body)