2つのPOST呼び出しを作成しています。1つはdjangoフォームを使用し、もう1つはリソースxhrを介してangularjsを使用します。
角度設定は次のようになります。
myModule.factory('gridData', function($resource) {
//define resource class
var root = {{ root.pk }};
var csrf = '{{ csrf_token }}';
return $resource('{% url getJSON4SlickGrid root.pk %}:wpID/', {wpID:'@id'},{
get: {method:'GET', params:{}, isArray:true},
update:{method:'POST', headers: {'X-CSRFToken' : csrf }}
});
});
xhr postリクエストをそのように作成すると:
item.$update();
このPOSTリクエストは期待どおりにサーバーに送信されますが、 QueryDictにアクセスしたい場合、以下を使用して渡されたデータにアクセスできません。
name = request.POST.get('name', None)
name
いつもNone
こんな感じです。
この背後にある問題は、QueryDictオブジェクトが非常に奇妙に解析されていることです。
print request.POST
<QueryDict: {u'{"name":"name update","schedule":0"}':[u'']}>
「通常の」Postリクエストを介してデータを送信したときに得られたこの結果を期待していましたが、次のようになります。
<QueryDict: {u'name': [u'name update'], u'schedule': [u'0']}>
したがって、DjangoはPOSTリクエストで、パラメータを1つの文字列に解析するように指示する何かを受け取ったようです。これを回避する方法はありますか?
アップデート:
MULTIPART_CONTENT以外のコンテンツタイプを指定すると、パラメータが1つの文字列に解析されることが問題であると彼らが言っているこの議論を見つけました。POSTリクエストでcontent-typesendを確認しましたが、実際にはに設定されてい'CONTENT_TYPE': 'application/json;charset=UTF-8'
ます。したがって、これが問題である可能性があります。したがって、私の質問は次のとおりです。angular.jsリソースを使用して作成されたxhr postリクエストのCONTENT_TYPEをどのように設定できMULTIPART_CONTENT
ますか?