से जेएसओएन ऑब्जेक्ट्स के एरे को पढ़ना मैं जेएस से सर्वर सर्वर पर AJAX कॉल के माध्यम से एक समग्र JSON संरचना कैसे पास करूं, इसे पायथन में "बहुत समान" डेटा संरचना के रूप में पढ़ूं?Django: QueryDict
मैं समझता हूं कि जेसन स्वरूपण का उपयोग किया जा सकता है (सरलजॉन इत्यादि), लेकिन मुझे लगता है कि QueryDict स्वयं को मेरे मामले में विकृत या सुधारित किया गया है?
उदाहरण:
जब JSON ऑब्जेक्ट की एक सरणी गुजर [{ "id": 1}, { "id": 2}, { "id": 3}] Django को देखने के लिए AJAX के माध्यम से, QueryDict
POST:<QueryDict: {u'json_data[0][id]': [u'1'], u'type': [u'clone'],
u'csrfmiddlewaretoken': [u'69bb3c434ced31ab301ede04bf491ec0'],
u'json_data[1][id]': [u'2'], u'json_data[2][id]': [u'3']}>
कैसे मैं भी json_data के माध्यम से पुनरावृति करते हैं: के रूप में स्वरूपित हो जाता है?
POST:<QueryDict: {u'json_data': [{u'id': [u'1']}, {u'id': [u'2']}, {u'id': [u'3']}]},
u'csrfmiddlewaretoken': [u'69bb3c434ced31ab301ede04bf491ec0'], u'type': [u'clone']>
तो है कि मैं एक शब्दकोश के रूप में QueryDict पहुँच सकते हैं और json_data एक निश्चित क्रम में एक सूची है और यह प्रक्रिया के रूप में प्राप्त कर सकते हैं:
मैं कुछ इस तरह के बजाय प्राप्त करना चाहते हो सकता है सिर्फ अनुक्रमिक में उन के माध्यम से पुनरावृति सूची आदेश। कुछ की तरह:
ret = request.POST
for item in ret['json_data']:
process(item['id'])
वास्तव में मूल्य है कि इस प्रक्रिया (में चला जाता है) के बजाय कुंजी मान जोड़ों का एक और शब्दकोश सिर्फ एक संख्या (1,2,3 आदि)
जावास्क्रिप्ट हो सकता है:
var test = [{"id": 1},{"id": 2},{"id": 3}];
$.post(
"/insert_tc",
{
json_data: test,
"type": 'clone',
"csrfmiddlewaretoken": $csrf_token
},
function(json) {
//CALLBACK
},
"json"
);
views.py:
def insert_tc(request):
if request.method == 'POST':
ret = request.POST
type = ret['type']
list = ret.getlist(ret)
लेकिन सूची लौटाती खाली []
मैंने कोशिश की simplejson उदासीनता, भार, आइटम, तरीकों मिल लेकिन उनमें से कोई मदद की।
मैंने jQuery.param (obj, true) भी कोशिश की, लेकिन यह वही नहीं है जो मैं चाहता हूं (हालांकि कुछ हद तक बंद है)।
क्या समग्र डेटा संरचनाओं को आगे और आगे पास करने के लिए एक अलग/बेहतर तरीका है Django < -> जेएस AJAX के माध्यम से?
कुछ है, निश्चित रूप से गलत है। क्या आप उस सटीक कोड को पोस्ट कर सकते हैं जो आउटपुट करता है? –
मुझे डर है कि जेएस कोड सटीक है। मैं कॉपी करता हूं कि जेएस स्निपेट और मामूली स्वरूपण के साथ scen.py से प्रिंट अनुरोध का आउटपुट कॉपी किया गया है। 'टेस्ट' ऑब्जेक्ट्स की सरणी है जिसे मैं गुजर रहा हूं। – rajivRaja
क्षमा करें, मेरी गलती। नीचे मेरा जवाब देखें। –