Làm cách nào để chuyển cấu trúc JSON hỗn hợp qua cuộc gọi AJAX từ JS và phía máy chủ, đọc nó như một cấu trúc dữ liệu "rất giống" trong python?Django: Đọc mảng các đối tượng JSON từ QueryDict
Tôi hiểu rằng định dạng json có thể được sử dụng (simplejson, v.v.), nhưng bằng cách nào đó tôi cảm thấy rằng bản thân QueryDict không đúng định dạng hoặc được định dạng lại trong trường hợp của tôi?
Ví dụ:
Khi đi qua một loạt các đối tượng JSON [{ "id": 1}, { "id": 2}, { "id": 3}] qua AJAX để Django xem, QueryDict được định dạng là:
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']}>
Làm cách nào để tôi thậm chí lặp qua json_data?
Tôi muốn để có được một cái gì đó như thế này thay vì:
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']>
Vì vậy mà tôi có thể truy cập vào QueryDict như một cuốn từ điển và lấy json_data như một danh sách và xử lý nó theo một thứ tự nhất định: có thể chỉ là lặp qua chúng trong tuần tự danh sách đơn đặt hàng. Cái gì như:
ret = request.POST
for item in ret['json_data']:
process(item['id'])
Trong thực tế, giá trị mà đi vào quá trình() có thể là một từ điển của các cặp giá trị quan trọng thay vì chỉ là một số (1,2,3 vv)
Javascript:
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)
Nhưng trả về danh sách trống []
Tôi đã thử các khối đơn giản, tải, mục, nhận các phương thức nhưng không có phương pháp nào trong số chúng được trợ giúp.
Tôi thậm chí đã thử jQuery.param (obj, true), nhưng đó không phải là những gì tôi muốn (mặc dù hơi đóng).
Có cách nào khác tốt hơn để chuyển cấu trúc dữ liệu tổng hợp qua lại Django < -> JS qua AJAX không?
Cái gì là chắc chắn sai, vì mã như được đăng chắc chắn sẽ không từ bỏ mà kết quả QueryDict. Xin vui lòng bạn có thể gửi mã chính xác mà kết quả đầu ra đó? –
Tôi sợ mã JS là chính xác. Tôi sao chép dán cả đoạn mã JS và đầu ra của yêu cầu in từ views.py với định dạng nhỏ. 'test' là mảng các đối tượng mà tôi truyền đi. – rajivRaja
Xin lỗi, sai lầm của tôi. Xem câu trả lời của tôi dưới đây. –