クライアント側では、このようなリストタイプのデータを含むJSONデータを送信しました。djangoのリストタイプのデータにアクセスするにはどうすればいいですか?
$.ajax({
url: '/man/manual',
type: 'POST',
data: {'id':'','title':'ttt','description':'desc','steps':[{'title':'1'},{'title':'2'}]},
dataType : 'JSON',
success : function(data) {
console.log(data);
}
});
これらのデータにアクセスしようとしました。
title = request.POST['title']
description = request.POST['description']
steps = request.POST['steps']
for step in steps:
print(step.title)
エラーが発生しました。
Traceback:
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/views/generic/base.py" in dispatch
89. return handler(request, *args, **kwargs)
File "/Users/sangwonlee/Makewith/trunk/MW_Service/mw_manual/views.py" in post
77. self.createManual(request)
File "/Users/sangwonlee/Makewith/trunk/MW_Service/mw_manual/views.py" in createManual
27. steps = request.POST['steps']
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/utils/datastructures.py" in __getitem__
322. raise MultiValueDictKeyError(repr(key))
Exception Type: MultiValueDictKeyError at /man/manual
Exception Value: "'steps'"
Request information:
GET: No GET data
POST:
description = 'desc'
steps[1][title] = '2'
steps[0][title] = '1'
title = 'ttt'
id = ''
どのように私のコードをクライアント側から正しいデータに変更できますか?
私はあなたの提案をテストしましたが、エラーメッセージが表示されました。例外値:JSONオブジェクトは 'bytes'ではなくstrでなければなりません リクエスト情報: GET:いいえGETデータ POST: {"id": "111"、 "title": "ttt"、 "description" 'desc"、 "steps":{"title": "1"}、{"title": "2"}、{"title": "3"}}} = '' – eachone
あなたは 'json 'を使いましたか?あなたのpythonコードで 'request.POST'の代わりに' load(request.body) 'を実行しますか? – Foryah
json.loads(request.body.decode()、encoding = 'utf-8')は私のために働いています – eachone