Hola,
Tengo una aplicación django donde quiero hacer POST haciendo clic en <button>
que no está en <form>
El problema es que los datos enviados a la función de visualización no se envían correctamente.
Aquí está el código de 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);
});
y aquí ver código:
def my_view(request):
print request.POST
return HttpResponse('XX')
No puedo acceder a los datos de request.POST porque la clave es un dict completo y una lista vacía de valores:
<QueryDict: {u'{"obj_id":"182","content_type":"video","like":true}': [u'']}>
El problema es que los objetos se serializan en JSON de forma predeterminada, mientras que usted necesita enviar los datos en el formato `application / x-www-form-urlencoded '. La solución más sencilla es utilizar una biblioteca como qs :
var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });
Vea este comentario para más detalles.
¡Espero que esto ayude!
Otra forma es poner los valores en el objeto FormData y publicar
Escribí un pequeño contenedor aroud axios que funciona bien con la configuración predeterminada de Django> 1.8. ¡Espero que esto ayude a alguien!
Comentario más útil
El problema es que los objetos se serializan en JSON de forma predeterminada, mientras que usted necesita enviar los datos en el formato `application / x-www-form-urlencoded '. La solución más sencilla es utilizar una biblioteca como qs :
Vea este comentario para más detalles.
¡Espero que esto ayude!