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