问题标签 [drf-spectacular]

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.

0 投票
1 回答
176 浏览

django - 如何在 drf_spectacular (django) 中发送带有请求的自定义 JSON 标头?

我可以在不使用@extend_schema 装饰器中的序列化程序类的情况下在drf_spectacular中创建 JSON 标头的自定义描述吗?

0 投票
2 回答
474 浏览

django - Django drf-spectacular - 你能排除特定路径吗?

我们在 urls.py 中有一堆不同版本的 api,例如

  • api/v1
  • api/v2
  • api/v3

. 我们想用 drf-spectacular 实现 swagger,但我们只想公开 api/v3 端点。

有没有办法做到这一点?我无法理解文档。

谢谢

0 投票
1 回答
685 浏览

django - drf 壮观未在 swagger ui 中显示查询参数

我有具有以下列表请求功能的通用 ListAPIView。这里的类别是一个查询参数。我试图实现这样,swagger ui 也在 swagger ui doc 中显示查询参数。如何做到这一点?我有以下代码。

0 投票
1 回答
75 浏览

django - 从 Swagger 文档中过滤 Enums 值的选项有哪些?

我正在使用带有drf-spectacular包的 Django 来生成 Swagger 文档。我想知道是否有更好的方法可以从 Schema 中的 Enum 部分过滤掉一些值。现在我已经使用自定义钩子完成了这个preprocess_schema_enums

枚举被指定为模型文件中的字段

钩子.py

0 投票
1 回答
282 浏览

django-rest-framework - 对自定义字段使用 extend_schema_field

我创建了一个名为的自定义字段PictureField,它使用上传的图像创建缩略图,并在我的User模型

用户模型中使用它:

My PictureField, 获取一个图像文件,django's ImageField并返回一个像这样的字典:

一切都很好,我的自定义字段工作正常。我的问题是用 drf_spectacular 创建的模式。我不知道如何将此输出设置为我的PictureSerializerField. 已经,我将@extend_schema_field我的字段的装饰器设置为BINARY(以便能够使用 Swagger 上传文件),并且我的响应输出设置为“字符串”:

现在,我的 Swagger 文档看起来像这样: 我正在寻找类似下面的内容来向 Response 显示我的输出,并且我还能够在请求中上传文件:

我的想法是创建一个空的序列化程序类并设置@extend_schema_serializer它,但我认为这不是好方法并且不起作用。

0 投票
1 回答
378 浏览

django-rest-framework - 使用版本控制时 drf-spectacular 不起作用(规范中未定义任何操作!)

几周前我安装了drf-spectacular. 一切正常,直到我在 DRF(Django Rest Framework)中启用版本控制。

我实施AcceptHeaderVersioning并且它工作正常。但后来我意识到 Swagger 没有在 /docs/ 处显示端点,并且显示了这条消息:“规范中没有定义操作!” .

如果我在设置中注释DEFAULT_VERSIONING_CLASSREST_FRAMEWORK,所有端点都会正确显示在 Swagger 文档页面 (/docs/) 中。但是,它破坏了我的版本控制:request.version = None.

我测试了AcceptHeaderVersioning, 以及URLPathVersioningNamespaceVersioning。所有这些结果都相同。

我读到这AcceptHeaderVersioning是一年前实施的。链接到这里的提交。

但我也读到它计划更改modify_for_versioning功能,它可能会影响标头版本控制。链接到管道模块中的功能,这里和对话这里。事实上,去年对模块进行了很多更改,请查看此处

这些是我的 DRF 设置:

问题

  1. 知道我做错了什么吗?有什么建议可以让两者一起工作(版本控制和招摇)?有什么建议么?
  2. 顺便说一句(这是次要问题,不是主要问题):是否可以drf-spectacular在我自己的项目中启动测试?

提前致谢!

0 投票
1 回答
660 浏览

django - 使用 drf-spectacular 为 django API 定义组件模式

我正在使用 drf-spectacular 为 django 生成 OpenAPI 模式。因为我没有使用序列化程序,所以我在extend_schema装饰器中定义了所有内容。现在我的问题是,是否可以手动定义组件架构。

这是我的 api 视图的示例:

并且相应的组件显示为空(例如在swagger中):

swagger-ui 空组件示例

是文档中的定义,但我无法弄清楚如何使用 drf-spectacular 来实现它。

0 投票
1 回答
67 浏览

django-rest-framework - 如何在招摇中禁用单个模式的模式扩展?

我正在Django使用DRF-Spectacularswagger-ui

我对如何禁用架构扩展(仅与令牌相关的单个架构)感兴趣,因此它只显示端点。

0 投票
1 回答
170 浏览

django - 对于 drf-spectacular 的 extend_schema 请求参数,是否有替代方法?

我正在使用drf-spectacular来生成 swagger/redoc API 文档。

最有用的功能之一是能够通过生成的 swagger html 页面测试请求,但我想强制执行application/x-www-form-urlencoded内容类型,以便当我的 Django 端点收到请求时,request.data具有编码数据,而不是作为查询字符串的一部分。drf-spectacular 似乎总是默认查询字符串,例如/objects/action/?key=value

我想出如何做到这一点的唯一方法是将序列化程序与请求内容类型结合使用,例如

这很好用,但它确实需要很多可能只有一两个属性的小型序列化程序。在 extend_schema 装饰器中是否有另一种方法可以实现这一点?

我希望像下面这样的东西会起作用,但没有

0 投票
1 回答
144 浏览

python - 如何在 drf-spectacular 中包含 400 个验证错误?

我想在 400 响应中查看验证详细信息,因为它们可以被序列化程序重新调用。序列化程序可以根据缺少的字段或无效值返回错误,我希望文档指出状态码 400 会出现哪种错误。像这样

200:成功

400: [ { "organisation_id": [ "此字段为必填项。" ] } ] #include 任何可能来自序列化程序的验证错误

我的代码目前是这个

目前这输出 200: Success

400:错误请求。发生一个或多个错误。

有没有类似的东西