このトピックに関する情報はたくさんありますが、djangoでjsonデータを送受信する正しい方法は何であるかはまだ分かりません。生のフォーマットを使用するかどうか。djangoでjsonリクエストを送受信する正しい方法は何ですか
Approach1:
#client
$.ajax({
type: "POST",
url: "api",
contentType: "application/json; charset=utf-8",
data: {
csrfmiddlewaretoken: '{{ csrf_token }}',
x: $("#x").val(),
},
success: response,
dataType: 'json',
minLength: 0,
});
# server - views.py:
@api_view(['GET', 'POST'])
@authentication_classes((TokenAuthentication, SessionAuthentication))
@permission_classes((IsAuthenticated,))
@staff_member_required
def api(request):
params = request.POST
Approach2:RAW形式を使用して:RAW形式を使用してませ
# client
$.ajax({
type: "POST",
url: "api",
contentType: "application/json; charset=utf-8",
headers: {'X-CSRFToken': '{{ csrf_token }}'},
data: JSON.stringify({
x: $("#x").val(),
}),
success: response,
dataType: 'json',
minLength: 0,
});
# server - views.py:
@api_view(['GET', 'POST'])
@authentication_classes((TokenAuthentication, SessionAuthentication))
@permission_classes((IsAuthenticated,))
@staff_member_required
def api(request):
params = json.loads(request.data)
私は生の形式を使用しているとき、あなたはリストを渡すことができると思いますが、生の書式がなくても、データのリストは理解できません。 一方、アプローチ2では、JSON.stringifyとjson.dumpsが必要です。私が知りたいのは何 approach2をスローし、あなたが身体にアクセスすることができないことを除き、なぜまた、私にはわからない... は次のとおりです。
- それは私が取るどのアプローチ重要ですか?
- もしそうなら、どのアプローチが適切で、なぜそうですか?
- raw jsonが望ましい場合は、なぜそれが下のajax リクエスト(下記のエラーを参照)に不平を言うのですか?
は、実は私の主な質問は、取得ので、生の形式でJSONデータを送信するかどうかでしたそれはrequest.bodyと。また、あなたの答えに関して、私は$ .ajaxSetupと$ .ajaxをどのように使うのか分かりません。これは、私がajax docがデフォルトでcrossDomainがfalseに設定されているということを気づいて以来、必要なのでしょうか? – max