【问题标题】:Post body parameter in Django Rest Framework Swagger在 Django Rest Framework Swagger 中发布正文参数
【发布时间】:2019-04-27 21:16:05
【问题描述】:

我想将 Swagger 添加到 Django REST 框架中,但我无法获取 POST 正文参数...

我的工作:

serrings.py

INSTALLED_APPS = [
   ....
   'rest_framework_swagger',
]


REST_FRAMEWORK = {
   'DEFAULT_PARSER_CLASSES': [
       'rest_framework.parsers.FormParser',
       'rest_framework.parsers.MultiPartParser',
       'rest_framework.parsers.JSONParser',
   ]
}

urls.py

schema_view = get_swagger_view(title='My API')
urlpatterns = [
    path('', schema_view),
    ...
]

Views.py

class MyView(APIView):

    def post(self, request, format=None):
        ...
        return Response(something)

但我的招摇总是看起来像:

在这种情况下,我无法发布我的 body 参数 (json) 来尝试... 如何解决这个问题

【问题讨论】:

    标签: post django-rest-framework swagger django-swagger


    【解决方案1】:

    swagger 从序列化程序类中选择字段名称,因此您必须在视图中添加序列化程序类名称。

    class MyView(APIView):
        serializer_class = SerializerclassName
        def post(self, request, format=None):
            ...
            return Response(something)
    

    【讨论】:

    • 如果我只想放入 Json 数据,...(而不是特定字段?)
    • 所有 json 字段映射到该序列化程序类字段,您将获得以 json 格式发送数据的选项。
    • 如果我使用函数视图而不是类视图怎么办?如何指定序列化程序类?
    • 当我与 django rest api 集成时,Swagger 不起作用。在这里,我使用具有多种方法的基于类的函数 django
    【解决方案2】:

    您需要添加serializer_class。 例如,

    class PostSomething(generics.CreateAPIView):
        serializer_class = rest_framework.serializers.Serializer # here
        permission_classes = (AllowAny,)
        allowed_methods = ('POST',)
    

    【讨论】:

    • 不要忘记在数据正文中使用双引号。使用单引号,不会单击执行按钮。
    猜你喜欢
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    相关资源
    最近更新 更多