update queryset framework create json django django-rest-framework typeerror

json - queryset - extra kwargs django rest



¿Por qué pierdo los paréntesis de cierre de mi endpoint Django Rest Framework? (2)

Esos caracteres son insertados por el middleware Djangular AngularJsonVulnerabilityMiddleware , para inyectar Json Vulnerability Protection

Una vulnerabilidad JSON permite que un sitio web de terceros convierta su URL de recursos JSON en una solicitud JSONP bajo ciertas condiciones. Para contrarrestar esto, su servidor puede prefijar todas las solicitudes JSON con la siguiente cadena ")]}'',/n" . Angular quitará automáticamente el prefijo antes de procesarlo como JSON.

Desafortunadamente, significa que rompe varios visores JSON.

Aquí está mi respuesta JSON para http://localhost:8000/characters/api/users/1?format=json

)]}'', {"id":1,"username":"admin","mage_by_user":[3],"mage_last_updated":"2015-02-11T16:13:16.229Z"}

Observe el )]}'', en la primera línea.

Aquí está mi código que se llama para crear el JSON:

class UserSerializer(serializers.ModelSerializer): mage_by_user = serializers.PrimaryKeyRelatedField( many=True, queryset=Mage.objects.all()) mage_last_updated = serializers.ReadOnlyField( source=''mage_by_user.updated_date'') class Meta: model = User fields = (''id'', ''username'', ''mage_by_user'', ''mage_last_updated'',)

Pruebas adicionales:

  • Me di cuenta de que el título de la página es TypeError at <insert url here> .
  • Esto sucede con todos mis puntos finales
  • Si intento acceder a un objeto que no existe (userId = 2 por ejemplo), entonces se renderiza ''normalmente'' para DRF, por ejemplo:

    {
    detalle: "No encontrado"
    }

Alguna idea de por qué esto pasaría?


Lamento no haber recibido más ayuda, pero esto parece algo completamente ajeno al marco REST. No hay absolutamente ninguna manera de que una respuesta JSON se represente de esa manera.

Tal vez tiene configurado un renderizador personalizado, que está generando una respuesta mal formada, quizás tenga algún middleware roto insertando esos caracteres, tal vez sea un problema en el cliente o en cualquier entorno en que realice las solicitudes, o tal vez sea algo completamente diferente a cualquier de aquellos.

Comenzaré tratando de reducir el problema tanto como sea posible: elimine toda la complejidad de la vista y el serializador e intente replicar el comportamiento en un caso de prueba.

Lo más probable es que haya algún tipo de problema de integración inesperado que te falte o algún tipo de error obvio que esté pasando por alto.