Django остальные API, автоматизировать документацию? - PullRequest
0 голосов
/ 16 мая 2018

Я пытался документировать API при написании наборов и использовать django rest docs . У меня следующие проблемы:

  • если я пытаюсь отправить значения для обратного связанного поля, он принимает список значений, но при отправке данных в Form-data он появляется в виде строки.

  • В интерфейсе документа нет возможности загрузки файлов.

Ниже мой код:

models.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')

view.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})

serializer.py

class AreaSerializer(serializers.ModelSerializer):
    email = EmailSerializer(many=True)
    phone = PhoneSerializer(many=True)

    class Meta:
        model = Area
        fields = '__all__'

я использую http://www.django -rest-framework.org / темы / документировании-ваш-апи /

Нет загрузки файла в поле изображения в документах по умолчанию.

enter image description here

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 августа 2018

Еще одна хорошая идея - использовать Swagger . В Django, особенно с использованием DRF, у вас есть возможность интегрироваться с Django Rest Swagger и генерировать автоматическую документацию для ваших конечных точек. Единственное требование - предоставить документирующей документацией ваши классы и методы API.

ps: я не имею никакого отношения к пакету или авторам django rest swagger, просто частый пользователь

0 голосов
/ 22 мая 2018

Хорошо, во-первых, чтобы быть более практичным, ваша функция создания должна быть такой:

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

Кроме того, почему вы не можете пошутить, чтобы легко настроить документацию, вам будет проще, или, может быть, это требование для вас

...