Django Rest Framework Swagger 停止工作

Django Rest Framework Swagger stopped working

刚刚尝试用 DRF 和 drf-yasg 重建一个容器。完全相同的提交很好地通过了所有测试,但现在由于以下异常而失败:

ImportError: Could not import 'rest_framework.schemas.coreapi.AutoSchema' for API setting 'DEFAULT_SCHEMA_CLASS'. ModuleNotFoundError: No module named 'rest_framework.schemas.coreapi'.

没有其他变化,但似乎包含了一个更新的包,它破坏了 Swagger 生成器。

还有其他人有类似经历吗?

所以 pip 似乎正在拉动 DRF V3.10,它有一些从 CoreAPI 到 OpenAPI 的切换:https://www.django-rest-framework.org/community/3.10-announcement/。添加发布文档中的行:

REST_FRAMEWORK = {
  ...
  'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}

似乎没有任何区别。

我认为您在 requirements.txt 中的依赖关系不够具体,并且重建容器已经安装了更高版本的 djangorestframework。

检查您的 pipfile 中的一行,如 djangorestframework>=3.9,这应该更改为固定特定版本 djangorestframework==3.9,或将其固定到特定的次要版本,这样您仍然会收到错误修复和安全更新 djangorestframework>=3.9,<3.10.

这些行也可以直接与 pip 一起使用,以防您的容器构建直接使用 pip,例如pip install "djangorestframework>=3.9,<3.10"

 pip3 install packaging

解决!

看来单独安装 coreapi 可能会有帮助:pip install coreapi