2014-06-20 3 views
12

장고 - 나머지 - swagger github page, 더 구체적으로 "어떻게 작동하는"부분에 대한 설명서를 벗어났습니다. 나머지 api에 대한 매개 변수를 직접 정의 할 수 있으며 이러한 매개 변수가 위조 문서 페이지에 표시되도록 할 수 있습니다.django-rest-swagger가 modelserializers와 잘 작동하지 않습니까?

"""  
This text is the description for this API  
param1 -- A first parameter  
param2 -- A second parameter  
"""  

나는이 작업을 얻을 수 있지만, 내 문제는 변수가 필요한 경우, 그 매개 변수 유형 및 데이터 유형을 지정하는 방법입니다 :

주석 달기 예를

는 같은입니다. github 페이지는 귀하의 미끈 미끈한 문서가 어떻게 보일 수 있는지에 대한 example image을 보여 주며, 나는 방금 언급 한 정보를 가지고 있습니다. 그러나 예제 쇼와 같은 사용자 지정 매개 변수에 주석을 달 때 매개 변수 유형으로 "쿼리", 데이터 형식 :이 비어 있으며 "필수"가 표시되지 않습니다.

답변에 가장 근접한 것은 this stackoverflow question입니다. 그것은 답변 공급자처럼 자동으로 귀하의 serializers (괜찮아요) 검사하여 설명서를 생성하고, 모델러가 제대로 장고 - 휴식 - swagger 내가 언급 한 기준을 유도하는 데 충분한 정보가 포함되지 않습니다 dagang - 나머지 - swagger 말하고있는 것 위. 나는 그것이이 기준을 이해할 수 없다는 것을 알지만, 나를 수동으로 지정하는 방법이 있어야한다.

나는 모델러를 단순한 시리얼 라이저로 다시 작성하면 장고 드레싱을 할 수 있다고 정정했다. 내가 수동으로 django-rest-swagger에게 매개 변수의 매개 변수 유형과 데이터 형식이 무엇인지, 그리고 필요한 경우이를 알려주는 방법이 없습니까?

나는 여기에 뭔가 빠져 있어야합니다. 장고 - 나머지 프레임 워크 튜토리얼의 예제와 거의 동일한 클래스 기반 뷰와 모델 작성자를 사용합니다. 이 문맥에서 "매개 변수 유형"에 대한 이해가 부족한 것 같습니다. 내 API가 훌륭하게 작동하고 있으며 모델 생성자를 serializer로 다시 작성하지 않으므로 더 나은 자동 문서화를 얻을 수 있습니다.

+0

이 문제를 해결할 시간이 있다고 생각되면 [Django REST 프레임 워크 토론 그룹] (https://groups.google.com/forum/?fromgroups#)에서이 질문을 할 가치가 있습니다. ! forum/django-rest-framework) - Marc Gibbons 또는 그의 프로젝트를 사용하는 다른 사람으로부터 답변을 얻을 수 있습니다. –

+0

@TomChristie 제안 해 주셔서 감사합니다. –

+0

주제가 업데이트 되었습니까? 나는 당신이 경험을 공유한다면 똑같은 문제가있을 것입니다. 미리 감사드립니다! – fox

답변

0

대부분의 경우 ModelSerializer는 필요에 맞게 크게 사용자 정의 할 수 있으므로 필요한 것입니다. 이상적인 상황에서 당신은 당신의 모델 클래스, 필드에 필요한 속성 같은 모든 제약 조건을 정의해야하지만 구조적으로 불가능 때가있다, 당신은 당신 ModelSerializer 서브 클래스에서 같은 필드를 재정의 할 수

from django.contrib.auth import get_user_model 
from rest_framework import serializers 


class UserSerializer(serializers.ModelSerializer): 
    first_name = serializers.CharField(required=True) 
    last_name = serializers.CharField(required=True) 

    class Meta: 
     model = get_user_model() 
예에서

내가 장고에서 표준 사용자 모델을 직렬화하고 FIRST_NAMELAST_NAME이 지금 필요하다고, 그렇게 속성을 필요 오버라이드 (override) 이상.
이 텍스트는 설명이다

"" "그 다음 당신은 항상 당신이 가지고있는 코드에서 시리얼 서브 클래 싱

0

에 폴백 할 수 ModelSerializer를 사용하는 것이 어렵거나 불가능 할 때 물론

, 경우가 있습니다 첫 번째 매개 변수
PARAM2 - - 두 번째 매개 변수
"" "

에 한번이 API
PARAM1에 대한 ""

좀 파이썬 및/또는 장고를 발견

는 "" "- - 첫 번째 매개 변수
PARAM2 두 번째 매개 변수
이 텍스트는이 API에 대한 설명
PARAM1입니다" 플러그인은 docstring의 첫 번째 라인을 필요로하는데, 이것은 문서를 시작하는 라인이기도 한 세 개의 큰 따옴표가있는 라인입니다. 마지막 큰 따옴표와 T 사이에 공백을 넣지 않아도됩니다.

1

ModelSerializer는 DR-Swagger와 함께 사용하는 올바른 방법입니다. 그것은 서로 다른 Swagger 필드가 추출 된 곳에서 정확히 쫓기는 것이 조금 까다로울 수 있습니다. 어디에서 오는지 파악하기 위해 페이지 렌더링 프로세스를 단계별로 디버깅해야하는 경우가 종종있었습니다.

차례로 :

필수 입력 사항 : Field.required 매개 변수 (모델 또는 Serializer 필드에서 설정)에서 가져옵니다. 설명은 Field.help_text 매개 변수에서 제공됩니다.

새로운 스타일의 DRF 직렬화에서 설명 텍스트는 ViewSet의 docstring에서 가져옵니다. 메소드 별 문서를 원하면 개별 메소드에 대한 docstring을 재정의해야합니다. retrieve :

def retrieve(self, request, *args, **kwargs): 
    """Retrieve a FooBar""" 
    return super().retrieve(request, *args, **kwargs) 

한 가지주의 할은 DR-자신감은 여전히 ​​몇 거친 가장자리를 가지고, (DRF 버전 3.5) 버전 2.0의 새로운 DRF 스키마 논리를 사용하여 마이그레이션 것입니다. 필자는 DR-Swagger 버전 0.3.x (권장하지 않지만)가 더 많은 기능을 가지고 있고 내 경험으로 볼 때 더 안정적인 직렬화를 권장합니다.

+0

'MySerializer.retreive .__ func __.__ doc__ = "검색 방법을 좀 더 짧게하려면 FooBar"검색 "을 할 수도 있습니다. – ZachM

관련 문제