python - queryset - django-rest-framework acepta datos JSON?
django rest framework serializer queryset (4)
Debe definir el tipo de contenido estableciendo los encabezados apropiados. En el caso de Postman, debe establecer los siguientes valores en el campo url:
Encabezado: "Tipo de contenido"
Valor: aplicación / json
He creado API RESTFul usando django-rest-framework. El punto final del usuario es
/api/v1/users
Quiero crear un nuevo usuario Envío datos de usuario en formato JSOn.
{
"username": "Test1",
"email": "[email protected]",
"first_name": "Test1",
"last_name": "Test2",
"password":"12121212"
}
Estoy usando la extensión de Chrome Postman para probar la API. Pero los datos del usuario no se han guardado. La respuesta es:
{
"detail": "Unsupported media type /"text/plain;charset=UTF-8/" in request."
}
Captura de pantalla adjunta
Debe hacer dos pasos para resolver este problema:
- Agregue el encabezado
Content-Type
con el valorapplication/json
- Agregue el encabezado de
Authorization
con el valorToken {YOUR_CUSTOM_TOKEN}
para pasar CSRFToken
Nota : si desea autenticarse con la sesión, no necesita hacer el segundo paso, pero si desea utilizar esta API para dispositivos móviles, debe pasar el encabezado de Autorización al servidor.
Espero que ayude
Se ha perdido agregar el encabezado Content-Type
en la sección de encabezados. Simplemente configure el encabezado Content-Type
en application/json
y debería funcionar.
Ver la imagen de abajo:
Además, es posible que también deba incluir un token CSRF en el encabezado en caso de que obtenga un error {"detail": "CSRF Failed: CSRF token missing or incorrect."}
realizar una solicitud POST
con Postman. En ese caso, agregue un encabezado X-CSRFToken
también con valor como el valor del token CSRF.
Estoy publicando esta respuesta en caso de que alguien tenga un problema como el mío.
Estoy trabajando en una aplicación de Front-End usando Angular 2 con una API hecha con Django Rest Framework y solía enviar solicitudes con los siguientes encabezados:
''Content-Type'': ''application/json''
Y funcionó bien hasta que lo probé en Fire Fox y no pude cargar los datos necesarios y lo resolví añadiendo los siguientes encabezados
''Content-Type'': ''application/json'',
''Accept'': ''application/json''
Aquí hay una explicación, Content-Type
le dice al servidor cuál es el tipo de contenido de datos mientras que Accept
le dice qué tipo de contenido aceptará el cliente.
Aquí hay una buena respuesta clara sobre este tema: