Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

165
Vistas
No se puede realizar una solicitud POST a través de fetch javascript a django rest api

acabo de empezar a aprender front-end y javascript. Entonces, anteriormente hice una API simple a través de Django Rest Framework. Y ahora, comience a probarlo a través de fetch-api de javascript. GET - no hay problema - funciona bien. POST: recibí un mensaje como: "415 Tipo de medio no compatible".

Aquí mi archivo html simplificado (tryjs.html) con solicitud POST de búsqueda incluida:

 <!DOCTYPE html> <html> <head> </head> <body> <script> let myurl2 = "http://127.0.0.1:8000/myfamily/"; async function myfu() { let response = await fetch(myurl2, { mode: "no-cors", method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({firstname: "first", secondname: "second"}) }) }; myfu(); </script> </body> </html>

Parece bastante simple y nada especial.

Aquí, el modelo.py de drf:

 from django.db import models class Family(models.Model): firstname = models.CharField(max_length=20) secondname = models.CharField(max_length=20) def __str__(self): return self.firstname

Y serializadores.py:

 from rest_framework import serializers from .models import Family class FamilySerializer(serializers.ModelSerializer): class Meta: model = Family fields = ('firstname', 'secondname')

Y ver:

 from rest_framework import viewsets from .models import Family from .serializers import FamilySerializer class FamilyViewSet(viewsets.ModelViewSet): queryset = Family.objects.all() serializer_class = FamilySerializer

Y urls.py de aplicaciones (agregado a urls.py de proyecto):

 from django.urls import path from rest_framework.routers import SimpleRouter from .views import FamilyViewSet from django.views.generic import TemplateView router = SimpleRouter() router.register('', FamilyViewSet, basename="family") urlpatterns = [ path('tryjs/', TemplateView.as_view(template_name="tryjs.html")), ] urlpatterns += router.urls

Hago la solicitud GET y POST a través del cartero; todo funciona bien. Hago la solicitud GET a través de un script javascript (he eliminado esta parte del código anterior), funciona bien. Tan pronto como intento hacer una solicitud POST a través del script js anterior, obtengo una falla sobre el tipo de medio incorrecto. Por favor ayuda. Intenté mucho. Y es un caso tan simple. Sin embargo... no funciona(

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

está obteniendo un tipo de medio incorrecto porque ha establecido mode: "no-cors" , lo que hace que el encabezado Content-Type sea inmutable. por lo que establecerlo en "application/json" se transformará automáticamente en "text/plain" . mantener el mode :"cors" y funcionará.

No es necesario que escriba el código js usted mismo, obtendrá el código del cartero. intenta usar eso

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda