2016-01-27 12 views
8

私はdjango-rest-swaggerでDjango REST Frameworkを使用して、私のAPI用のブラウズ可能なインターフェイスを作成しています。 YAML docstringを使用してリクエストボディシリアライザを指定できますが、リクエストクエリパラメータのシリアライザを指定する方法が見つかりませんでした。私が使用しています ビューはかなりのようです:django-rest-swaggerでクエリパラメータシリアライザを指定する方法は?

class ListBans(BaseBanView): 

    def get(self, request): 
     """ 
     List all profile bans 
     --- 
     response_serializer: backend_serializers.BanSerializer 
     request_serializer: moderator_serializers.ListBansSerializer 
     """ 
     serializer = moderator_serializers.ListBansSerializer(data=request.query_params) 
     if serializer.is_valid(raise_exception=True): 
      # query profile bans 
      data = [] 
      return APIResponse(status=status.HTTP_200_OK, data=data) 

class ListBansSerializer(serializers.Serializer): 
    limit = serializers.IntegerField(default=10, help_text='query limit') 
    offset = serializers.IntegerField(default=0, help_text='query offset') 

私が達成しようとしている私は手動parametersセクションを指定する必要がないようにListBansSerializerからdjango-rest-swaggerは、クエリパラメータのためのフォームフィールドを作成することですdocstring。それを行う方法はありますか?

答えて

4

私は、自動的にクエリパラメータをドキュメントストリングに追加する単純なデコレータを作成しました。ソースはgithubです。使用例を次に示します。

class ListBansSerializer(serializers.Serializer): 
    limit = serializers.IntegerField(default=10, help_text='query limit') 
    offset = serializers.IntegerField(default=0, help_text='query offset') 


class ListBans(BaseBanView): 
    @add_query_parameters(ListBansSerializer) 
    def get(self, request): 
     """ 
     List all profile bans 
     --- 
     response_serializer: backend_serializers.BanSerializer 
     """ 
     serializer = moderator_serializers.ListBansSerializer(data=request.query_params) 
     if serializer.is_valid(raise_exception=True): 
      # query profile bans 
      data = [] 
      return APIResponse(status=status.HTTP_200_OK, data=data) 
関連する問題