2017-11-08 14 views
0

DRFプロジェクトのスワッガー(OpenAPI)スキーマを生成したいと思います。ビューセットアクションのDjango RESTフレームワークスキーマパラメータリスト

生成されたスキーマにクエリパラメータ指定を追加するにはどうすればよいですか?

FileViewSet.listメソッドを見てください。ここではrequest.GETパラメータprojectを文書化(必須)する必要がありますが、自動スキーマ生成ではそれが欠けています。

# views.py 

class FileSerializer(serializers.ModelSerializer):  
    class Meta: 
     model = File 
     fields = ('name', 'id', 'project') 


class FileViewSet(viewsets.ModelViewSet): 
    queryset = File.objects.all() 
    serializer_class = FileSerializer 

    def list(self, request): 
     project = request.GET.get("project", None) 

     qs = self.get_queryset().filter(project=project) 


router = routers.DefaultRouter(trailing_slash=False) 
router.register(r'^file$', FileViewSet) 


# OpenAPI Schema generation 

class SwaggerRenderer(renderers.BaseRenderer): 
    media_type = 'application/openapi+json' 
    format = 'swagger' 

    def render(self, data, media_type=None, renderer_context=None): 
     codec = OpenAPICodec() 
     return codec.dump(data) 

schema_view = get_schema_view(
    title='API', 
    public=True, 
    renderer_classes=[SwaggerRenderer], 
    authentication_classes=[], 
    permission_classes=[AllowAny], 
    patterns=router.urls, 
) 

api_urls = router.urls + [url(r'^schema$', schema_view, name="schema")] 

そしてurls.pyapi_urlsをinluding:ここ

は、例えば、APIプロジェクトである

# urls .py 

from .views import api_urls 

urlpatterns = [ 
    url(r'^v1/', include(api_urls, namespace="v1")), 
] 

手動でカスタムフィールドを追加するAPIViewを文書化するためのDRF coreapi ManualScheme docsがありますが、のためのドキュメントはありませんビューセット

答えて

0

私はあなたがそれを少し間違って設定したと思います。私がプロジェクトで行ったことは、rest_framework_swagger.viewsからget_swagger_viewをインポートし、プロジェクトのURLにビューを追加して、魅力的に働いたことです。

# project/urls.py 

from rest_framework_swagger.views import get_swagger_view 
schema_view = get_swagger_view(title='My API') 

urlpatterns = [ 
    # other urls... 
    url(r'^schema/$', schema_view), 
] 

参考:Swagger Docs

get_swagger_viewは、基本的なコンフィギュレーションを取得するためのショートカットです。詳細な制御方法については、advanced usageを参照してください。

+0

クエリパラメータの設定はどうですか?このようにして、私は基本的な設定だけを得るでしょう。 –

+0

[this](https://stackoverflow.com/questions/45222078/how-to-use-query-parameters-in-django-swagger-documentation)の質問をご覧ください。 –

関連する問題