2015-07-28 90 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)