Axios: 投稿が正しくデータを送信していません

作成日 2016年08月18日  ·  3コメント  ·  ソース: axios/axios

こんにちは、
<form>ない<button>をクリックしてPOSTを作成したいdjangoアプリケーションがあります
問題は、ビュー機能に送信されたデータが正しく送信されていないことです。

これがaxiosコードです:

 axios({
        method: 'post',
        url: '/url/to/view'
        data: {
            obj_id: objectid,
            content_type: contenttype,
            like: !is_liked
        },
        xsrfCookieName: 'csrftoken',
        xsrfHeaderName: 'X-CSRFToken',
        headers: {'X-Requested-With': 'XMLHttpRequest',
                  'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
    }).then(function (response) { 
        console.log(response);
    });

そしてここにコードを表示します:

def my_view(request):
    print request.POST
    return HttpResponse('XX')

キーがdict全体であり、値が空のリストであるため、request.POSTデータにアクセスできません。
<QueryDict: {u'{"obj_id":"182","content_type":"video","like":true}': [u'']}>

最も参考になるコメント

問題は、「application / x-www-form-urlencoded」形式でデータを送信する必要があるときに、オブジェクトがデフォルトでJSONにシリアル化されることです。 最も簡単な解決策は、 qsのようなライブラリを使用することです。

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });

詳細については、このコメントを参照してください。

お役に立てれば!

全てのコメント3件

問題は、「application / x-www-form-urlencoded」形式でデータを送信する必要があるときに、オブジェクトがデフォルトでJSONにシリアル化されることです。 最も簡単な解決策は、 qsのようなライブラリを使用することです。

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });

詳細については、このコメントを参照してください。

お役に立てれば!

別の方法は、値をFormDataオブジェクトに入れて投稿することです

デフォルトのDjango> 1.8設定で正常に動作する小さなラッパーaroudaxiosを作成しました。 これが誰かに役立つことを願っています!

このページは役に立ちましたか?
0 / 5 - 0 評価