tutorial python django django-rest-framework api-doc django-swagger

python - tutorial - Django resto API, automatizar documentación?



django python (2)

Intenté documentar las API mientras escribía conjuntos de vistas y usaba los documentos de resto de django . Estoy teniendo los siguientes problemas:

  • Si trato de enviar valores para el campo relacionado inverso, toma una lista de valores, pero al enviar los datos en Form-data, aparece como una cadena.

  • No hay opción para cargar archivos en la interfaz de usuario de documentos.

Lo siguiente es mi código:

modelos.py

class Area(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) name = models.CharField(max_length=100) address = models.TextField() image = models.ImageField(upload_to=''area/'') created_on = models.DateTimeField(auto_now_add=True) modified_on = models.DateTimeField(auto_now=True) zipcode = models.CharField(max_length=15, null=True) is_verified = models.BooleanField(default=False) class Meta: ordering = (''-modified_on'',) class Email(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) email = models.EmailField() area = models.ForeignKey(Area, on_delete=models.CASCADE, null=True, related_name=''email'') class Phone(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) phone = models.CharField(max_length=15) area = models.ForeignKey(Area, on_delete=models.CASCADE, null=True, related_name=''phone'')

ver.py

class AreaViewSet(viewsets.ModelViewSet): """ create: Create a new area instance. """ serializer_class = AreaSerializer parser_classes = (FormParser, MultiPartParser,FileUploadParser) queryset = User.objects.all() permission_classes = [AllowAny, ] filter_backends = (DjangoFilterBackend,) filter_fields = (''first_name'',) def create(self, request): data = self.request.data with transaction.atomic(): name = data[''name''] address = data[''address''] email = json.loads(data[''email'']) phone = json.loads(data[''phone'']) zipcode = data[''zipcode''] area = Area.objects.create(name=name,address=address, zipcode=zipcode) for i in email: Email.objects.create(email=i[''email''], area = area) for i in phone: Phone.objects.create(phone=i[''phone''], area=area) return Response({''status'': {''code'': status.HTTP_200_OK, ''error'': None, ''message'':'' Area has been added.'' }, ''data'': None})

serializador.py

class AreaSerializer(serializers.ModelSerializer): email = EmailSerializer(many=True) phone = PhoneSerializer(many=True) class Meta: model = Area fields = ''__all__''

Estoy usando http://www.django-rest-framework.org/topics/documenting-your-api/

No hay carga de archivos en el campo de imagen en los documentos predeterminados.

Gracias


Ok, primero, para ser más práctico, tu función de creación debe ser así

def create(self,request, *args,**kwargs): data = request.data logger.debug("%s" % data) request = (self.__dict__[''request'']) #parse the rest of your code here

Además, ¿por qué no puede arriesgarse a configurar fácilmente su documentación? Será más fácil para usted, o tal vez sea un requisito para usted.


Otra buena idea sería usar Swagger . En Django, especialmente utilizando DRF, tiene la oportunidad de integrarse con Django Rest Swagger y generar documentación automática para sus puntos finales. El único requisito es proporcionar con docstrings-document sus clases y métodos API.

ps: no tengo ninguna afiliación con el paquete django resto swagger o autores, solo un usuario frecuente