问题标签 [drf-yasg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django-rest-framework - drf_yasg 不将 TYPE_ARRAY 作为有效类型
drf_yasg swagger 生成器不将 TYPE_ARRAY 作为有效的参数类型。实现如下
而 drf_yasg 的文档表明它将 openapi.TYPE_ARRAY 作为有效类型。
生成器抛出的错误是
是否有一些我缺少的配置或什么,因为 TYPE_STRING,TYPE_NUMBER 工作得很好。
django - 未调用 ListCreateAPIView 的 get_queryset
我有一个试图覆盖 get_queryset 的 ListCreateAPIView,但它从未被调用过。这是我的看法:
这是 urls.py:
get_queryset
关于为什么没有被击中/覆盖的任何想法?
django - 如何在 DRF-YASG 中为 DRF 和 DJANGO 消除 swagger-ui 中的 id 路径参数
我正在使用 DRF-YASG 在 Swagger 中记录 API,并希望自定义/消除参数中显示的某些字段
我正在使用 Django 2.1.7、DRF 3.9.2 和 DRF-YASG 1.14.0 运行该项目。
所以,我想消除 swagger-ui 中显示的 ID(如“字符串”和“路径”),因为我通过 Schema 在正文请求中拥有它,但 swagger-ui 显示 id(自动生成的字段)在参数中。
在下面的屏幕中,您可以看到问题:
https://user-images.githubusercontent.com/5421182/54859641-70359d00-4cee-11e9-9b12-79ab57d12495.png
在这里,我的代码...
当我在 in 中添加字段时manual_parameters
,@swagger_auto_schema
仅更改 this 的属性...但该字段仍然存在。
python - DRF_YASG 生成的文档中的自由格式文本
有没有办法向通过 drf_yasg 生成的文档添加自由格式的文本?我在他们的文档中看不到明显的解释。
我只想添加几节介绍文本。
python - 如何使用 drf-yasg 自动生成的招摇页面配置“HTTPS”方案?
我知道在传统的招摇 YAML 文件中,我们可以使用以下方式定义方案:
但是,如何使用drf-yasg
库自动生成的招摇页面做同样的事情?
现在,生成的 swagger 页面仅包含HTTP
方案,但HTTPS
缺少。我已经尝试将DEFAULT_API_URL
in设置setting.py
为https://mybaseurl.com
,但它似乎不起作用。
django - 使用 Swagger 记录具有多个响应的 DRF GET 端点
我有一个使用 Django 创建的 RESTful API 的 GET 端点。此端点从 URL 的查询字符串中读取三个值。查询字符串中的特定参数可能会更改来自此端点的 JSON 响应中返回的数据(包括额外的字段并稍微更改结构)。
此端点不直接绑定到单个模型。我的视图子类RetrieveAPIView
,在视图中,我重写了get_object
方法并执行了一些逻辑来查询多个模型,做出一些决定并返回一个有序的字典。
我的问题如下:
我想使用 Swagger 记录这个端点。我drf-yasg
用来生成我的 Swagger 文档。我没有为此视图声明序列化程序;因为我手动构建了一个有序字典,get_object
所以我没有看到声明一个字典的目的。我不确定如何使用drf-yasg
.
我只发现了一种记录端点的方法,但它非常丑陋并且使我的代码膨胀,我想知道是否有更好的方法。
通过声明一个openapi.Response
对象,并将这个对象提供给@swagger_auto_schema
装饰器 Swagger 显示两个可能的响应,但描述整个响应确实使我的代码膨胀。这是一个示例,如果当前可以记录端点:
有没有更好的方法来解决这个问题?是否有更好的 Django 框架或 drf-yasg 库的 Django 设计模式/功能,我可以在这里应用它来帮助我处理多个响应体?
django - 如何为多项选择过滤器生成模式?
在我们的 API 中,我们有一个端点来列出位置。我们允许过滤位置类型,并且我们允许此过滤器使用多个值。例如:
对于过滤,我们使用django-filter
. 但是,drf-yasg
似乎没有正确生成此参数的架构。
视图类可以归结为:
过滤器类如下所示:
此视图按预期工作 - 以下测试通过:
我希望为这个参数生成的 yaml 看起来像这样:
但相反,它看起来像这样:
这是一个限制drf-yasg
吗?
不能使用swagger_auto_schema
's query_serializer
,因为它不允许覆盖过滤器后端生成的模式。
这似乎是因为django_filters.rest_framework.backends.DjangoFilterBackend.get_coreschema_field
只输出两种字段类型,数字和字符串。我继续并覆盖了该方法,但是,它随后抛出错误drf_yasg.inspectors.query.CoreAPICompatInspector.coreapi_field_to_parameter
,不接受数组类型。
django - Swagger 从序列化程序提供正确的 POST 方法 API 渲染,但不适用于 DELETE 方法
我们的项目正在使用 Django、Django-Rest-Framework 和 drf_yasg 大摇大摆地记录我们的 API。我创建了一个序列化程序,并将它与我的 POST 方法一起使用。一切正常,所有字段都出现在我的招摇页面上。我使用相同的序列化程序创建了一个删除方法,并且 swagger 文档仅将第一组字段显示为 API 的参数。
我试着用
并有一个单一的方法。文档页面中立即缺少 post 和 delete 方法。
以及使用时
@swagger_auto_schema(responses={200: listResponseSerializer()})
Post 方法有效,但 delete 方法无效。
此捕获显示了 POST 方法的良好结果,其中所有字段都显示在 API 文档中。过滤器、参数等。
使用 DELETE,它只显示过滤器并忽略序列化程序中存在的所有其他字段。
希望有人可以帮助我解决这个问题。我现在正在为此苦苦挣扎几天。我不明白我错过了什么,或者我不理解 django 和 swagger 之间的哪些集成,需要帮助。