Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何在drf yasg中设置路径参数的数据类型_Django_Django Rest Framework_Drf Yasg - Fatal编程技术网

Django 如何在drf yasg中设置路径参数的数据类型

Django 如何在drf yasg中设置路径参数的数据类型,django,django-rest-framework,drf-yasg,Django,Django Rest Framework,Drf Yasg,我使用、和自动构建TypeScript代码来访问RESTAPI 在Django后端,我添加了一个要与DRF一起使用的路径: rest_router = routers.DefaultRouter() rest_router.register(r'source/(?P<source_id>[0-9]+)/document', DocumentViewSet) 我如何告诉drf yasg将源id参数设置为type Integer drf yasg上的标准OpenAPISchemaGen

我使用、和自动构建TypeScript代码来访问RESTAPI

在Django后端,我添加了一个要与DRF一起使用的路径:

rest_router = routers.DefaultRouter()
rest_router.register(r'source/(?P<source_id>[0-9]+)/document', DocumentViewSet)
我如何告诉drf yasg将
源id
参数设置为type Integer

  • drf yasg上的标准OpenAPISchemaGenerator仅检查路径变量名是否与view queryset模型字段匹配,如果存在,则使用模型字段的类型。否则它默认为string。如果文档模型有一个名为“source\u id”的数字字段,那么您的原始代码应该可以工作。对外关系也应该起作用,但在这种情况下,参数名很可能是字段名(source),而不是id引用(source\u id)

  • @swagger_auto_模式应应用于视图方法,而不是视图类。AFAIK将其应用于view类没有任何作用。看

  • 作为一项附带任务,我四处摸索,看看是否有可能使用pythons内置的类型来确定类型,简短的回答是肯定的,但有点混乱。如果有人发现它有用,扔掉它,你自己承担风险


  • 在上面的生成器中,我们允许drf yasg进行初始类型确定,但随后添加了一个额外的步骤,允许重写类型输入 视图类

    示例视图

    class DocumentView(APIView):
        path_type_source_id = openapi.TYPE_INTEGER
    
    启用带有摆动设置的发电机

    SWAGGER_SETTINGS = {
        'DEFAULT_GENERATOR_CLASS': 'path.to.CustomSchemaGenerator',
    }
    

    文档模型中有一个源外键成员,但是重命名参数仍然会产生一个字符串。是否有方法也修饰视图类?这对这里有帮助吗?我想这可能是另一个问题……Django提供了一个名为“method_decorator”的实用程序装饰器来装饰视图类,但请注意,它需要方法名作为参数。我的答案中也有一个输入错误,应该是
    path\u type\u source\u id=openapi.type\u INTEGER
    。固定的。
    class DocumentView(APIView):
        path_type_source_id = openapi.TYPE_INTEGER
    
    SWAGGER_SETTINGS = {
        'DEFAULT_GENERATOR_CLASS': 'path.to.CustomSchemaGenerator',
    }