drf-spectacular使用错误的AutoSchema生成Swagger

问题描述

以前,我使用的是drf-yasg,但想更新以使用OpenAPI3。我试图切换到drf-spectacular。在instruction之后,我运行了pip install drf-spectacular删除了对drf-yasg包的所有引用,并按如下所示更新了Settings.py

INSTALLED_APPS = [ 
    ...
    "drf_spectacular",]


REST_FRAMEWORK = {
    "DEFAULT_SCHEMA_CLASS": "drf_spectacular.openapi.AutoSchema",}

当我使用CLI生成架构时,出现以下提示AssertionError。如果有人以前遇到过这个问题并且有任何见识,将不胜感激!

我正在使用Python 3.7,Django 3.0,Django Rest Framework 3.11和DRF Spectacular 0.10.0。

Traceback (most recent call last):
  File "manage.py",line 23,in <module>
    main()
  File "manage.py",line 19,in main
    execute_from_command_line(sys.argv)
  File "/opt/anaconda3/envs/dev/lib/python3.7/site-packages/django/core/management/__init__.py",line 401,in execute_from_command_line
    utility.execute()
  File "/opt/anaconda3/envs/dev/lib/python3.7/site-packages/django/core/management/__init__.py",line 395,in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/opt/anaconda3/envs/dev/lib/python3.7/site-packages/django/core/management/base.py",line 328,in run_from_argv
    self.execute(*args,**cmd_options)
  File "/opt/anaconda3/envs/dev/lib/python3.7/site-packages/django/core/management/base.py",line 369,in execute
    output = self.handle(*args,**options)
  File "/opt/anaconda3/envs/dev/lib/python3.7/site-packages/drf_spectacular/management/commands/spectacular.py",line 50,in handle
    schema = generator.get_schema(request=None,public=True)
  File "/opt/anaconda3/envs/dev/lib/python3.7/site-packages/drf_spectacular/generators.py",line 187,in get_schema
    paths=self.parse(request,public),File "/opt/anaconda3/envs/dev/lib/python3.7/site-packages/drf_spectacular/generators.py",line 160,in parse
    'Incompatible AutoSchema used on View. Is DRF\'s DEFAULT_SCHEMA_CLASS '
AssertionError: Incompatible AutoSchema used on View. Is DRF's DEFAULT_SCHEMA_CLASS pointing to "drf_spectacular.openapi.AutoSchema" or any other drf-spectacular compatible AutoSchema?

解决方法

请更新Django Rest Framework 3.11至3.12,它将起作用。