API Django rest, автоматизировать документацию?
Я пытался документировать 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/topics/documenting-your-api/
Нет загрузки файла в поле изображения в документах по умолчанию.
Спасибо
Ответы
Ответ 1
Еще одна хорошая идея - использовать Swagger. В Django, особенно с использованием DRF, у вас есть возможность интегрироваться с Django Rest Swagger и создавать автоматическую документацию для ваших конечных точек. Единственное требование - предоставить docstrings-документирование ваших классов и методов API.
ps: У меня нет связи с django rest swagger package или авторами, просто частый пользователь
Ответ 2
Хорошо сначала, чтобы быть более pratical, ваша функция создания должна быть такой
def create(self,request, *args,**kwargs):
data = request.data
logger.debug("%s" % data)
request = (self.__dict__['request'])
#parse the rest of your code here
Кроме того, почему вы не можете легко настроить свою документацию, вам будет легче, или, может быть, это требование для вас