1

我正在尝试将https://github.com/axnsan12/drf-yasg这个库添加到我们的 django 应用程序并得到以下错误。

permission_classes=(permissions.AllowAny,),
  File "/env/lib/python3.7/site-packages/drf_yasg/views.py", line 67, in get_schema_view
    _generator_class = generator_class or swagger_settings.DEFAULT_GENERATOR_CLASS
  File "env/lib/python3.7/site-packages/drf_yasg/app_settings.py", line 122, in __getattr__
    val = perform_import(val, attr)
  File "env/lib/python3.7/site-packages/rest_framework/settings.py", line 166, in perform_import
    return import_from_string(val, setting_name)
  File "env/lib/python3.7/site-packages/rest_framework/settings.py", line 180, in import_from_string
    raise ImportError(msg)
ImportError: Could not import 'drf_yasg.generators.OpenAPISchemaGenerator' for API setting 'DEFAULT_GENERATOR_CLASS'. ImportError: cannot import name 'URLPattern' from 'rest_framework.compat' (env/lib/python3.7/site-packages/rest_framework/compat.py).

经过一些研究,我发现有些人建议安装这个包来解决这个问题

pip3 install packaging 

但这没有任何区别。还有其他可用于 django rest api 的好的 api 文档库吗?

4

2 回答 2

10

更新

该问题已在drf-yasg==1.20.0--(Release notes)中修复,因此您可以通过以下方式升级到最新版本

pip install drf-yasg -U

原始答案

drf-yasg-(#641)中有一个未解决的问题来解决此问题。不幸的是,鉴于自2020 年 2 月以来没有任何活动,该项目不再维护(参考)。

但是,@JoelLefkowitz创建了该项目的一个分支,它在名为drf-yasg2 的版本中可用,它已修复了 OP 的问题。

您需要做的是,从迁移drf-yasgdrf-yasg2--(ReadTheDoc)

安装

pip install drf-yasg2

并将其添加到该INSTALLED_APPS部分

INSTALLED_APPS = [
      ...
      'drf_yasg2',
      ...
   ]
于 2020-10-21T09:48:10.597 回答
1

看起来 DRF 没有rest_framework.compat.URLPattern从 version 开始3.12,并且 drf-yasg 还没有赶上这个。确保您的 DRF 版本低于 3.12。例如:pip install djangorestframework==3.11.2

于 2020-10-21T08:06:29.697 回答