Axios: A postagem não está enviando dados corretamente

Criado em 18 ago. 2016  ·  3Comentários  ·  Fonte: axios/axios

Olá,
Eu tenho um aplicativo django onde desejo fazer um POST clicando em <button> que não está em <form>
O problema é que os dados enviados para a função de visualização não estão sendo enviados corretamente.

Aqui está o código 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);
    });

e aqui veja o código:

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

Não consigo acessar os dados request.POST porque a chave é um dicionário inteiro e uma lista vazia de valores:
<QueryDict: {u'{"obj_id":"182","content_type":"video","like":true}': [u'']}>

Comentários muito úteis

O problema é que os objetos são serializados para JSON por padrão, enquanto você precisa enviar os dados no formato `application / x-www-form-urlencoded '. A solução mais fácil é usar uma biblioteca como a qs :

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

Veja este comentário para detalhes.

Espero que isto ajude!

Todos 3 comentários

O problema é que os objetos são serializados para JSON por padrão, enquanto você precisa enviar os dados no formato `application / x-www-form-urlencoded '. A solução mais fácil é usar uma biblioteca como a qs :

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

Veja este comentário para detalhes.

Espero que isto ajude!

Outra maneira é colocar os valores no objeto FormData e postar

Eu escrevi um pequeno wrapper aroud axios que funciona bem com configurações Django> 1.8 padrão. Espero que isso ajude alguém!

Esta página foi útil?
0 / 5 - 0 avaliações