首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >drf-壮观的extend_schema不起作用

drf-壮观的extend_schema不起作用
EN

Stack Overflow用户
提问于 2021-06-15 09:45:18
回答 1查看 3.2K关注 0票数 0

我最近在我的项目中从drf-yasg迁移到了drf-spectacular,但是@extend_schema装饰器似乎没有向我生成的模式添加任何信息:

  • views.py

代码语言:javascript
运行
复制
class SearchView(GenericViewSet):
    serializer_class = serializers.CriterionSerializer
    
    
    @extend_schema(
        methods=['post'],
        summary="Find patients according to search query.",
        description="Search for patients related to Documents found with the given query.",
        request=PolymorphicProxySerializer(
            component_name='Criterion',
            serializers=[
                    serializers.TextCriterionSerializer, serializers.GroupCriterionSerializer,
            ],
            resource_type_field_name='type',
        )
    )
    @action(detail=False, methods=['POST'])
    def fetch(self, request):
        serializer = serializers.CriterionSerializer(data=request.data)
        if not serializer.is_valid(raise_exception=True):
            return Response(serializer.errors, status=400)
        
        return serializers.PatientDocumentSerializer(
            serializer.create(serializer.validated_data).fetch(), context={'request': request},
            many=True
        ).data

下面是生成模式的相关部分:

代码语言:javascript
运行
复制
 /search/fetch/:
    post:
      operationId: searchFetchCreate
      description: ''
      tags:
      - search
      security:
      - jwtAuth: []
      responses:
        '200':
          description: No response body

这里有一些关于上下文的其他信息:

  • urls.py

代码语言:javascript
运行
复制
router = routers.DefaultRouter()
router.register(r'search', views.SearchView, basename='search')

urlpatterns = [
    path('', include(router.urls), name="search"),
]

  • SPECTUACULAR_SETTINGS

代码语言:javascript
运行
复制
SPECTACULAR_SETTINGS = {
    'TITLE': 'API',
    'VERSION': '1.0.0',
    'CAMELIZE_NAMES': True,
    'COMPONENT_SPLIT_REQUEST': True,
    'SERVE_PERMISSIONS': ['rest_framework.permissions.AllowAny'],
    'SWAGGER_UI_SETTINGS': {
        'deepLinking': True,
        'filter': True,
        'displayRequestDuration': True,
        'syntaxHighlight.activate': True,
        'syntaxHighlight.theme': 'monokai',
    },
}

  • 版本:

代码语言:javascript
运行
复制
$ pip3 show django drf-spectacular
Name: Django
Version: 2.2.13
[...]
---
Name: drf-spectacular
Version: 0.17.1
[...]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-26 14:51:42

这是由于methods=['post'],而不是methods=['POST'],@extend_schema中造成的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67983872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档