web-dev-qa-db-ja.com

swaggerが不明確なエラーを発生させる理由-Django

Django restバックエンドアプリがあります。私はswaggerを使用して、APIを調べてFEに文書化します。

これは問題なく動作しましたが、いくつか変更を加えたところ、次のエラーが発生しました。

Internal Server Error: /
Traceback (most recent call last):
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/Django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/Django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/Django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/Django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/Django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/rest_framework/views.py", line 497, in dispatch
    response = self.handle_exception(exc)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/rest_framework/views.py", line 457, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/rest_framework/views.py", line 468, in raise_uncaught_exception
    raise exc
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/rest_framework/views.py", line 494, in dispatch
    response = handler(request, *args, **kwargs)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/rest_framework_swagger/views.py", line 32, in get
    schema = generator.get_schema(request=request)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/rest_framework/schemas/coreapi.py", line 153, in get_schema
    links = self.get_links(None if public else request)
  File "/home/notsoshabby/.local/share/virtualenvs/panda_pitch-UBt5SNMA/lib/python3.7/site-packages/rest_framework/schemas/coreapi.py", line 140, in get_links
    link = view.schema.get_link(path, method, base_url=self.url)
AttributeError: 'AutoSchema' object has no attribute 'get_link'
HTTP GET / 500 [0.15, 127.0.0.1:44214]
/home/notsoshabby/Desktop/panda_pitch/Django_project/settings.py 

AutoSchemaは私のコードの一部ではなく、トレースバックは私のコードのどこに問題があるかを示していないため、このエラーはあまり明確ではありません。変更が多すぎて1つずつ行って、どれが原因かを確認しました。

誰かがこの問題を以前に経験しましたか?どの変更がこの問題の原因であるかを見つけるためにデバッグする方法に関するアイデアはありますか?

18
NotSoShabby

私は同じ問題に遭遇しました、修正はここに説明されています: https://www.Django-rest-framework.org/community/3.10-announcement/

要約すると、Django Rest Framework 3.10(数日前にリリースされた)は、CoreAPIベースのスキーマ生成を廃止し、代わりにOpenAPIスキーマ生成を導入しました。現在、Django-rest-swaggerを引き続き使用同様に、次の設定を設定ファイルに追加して、CoreAPIスキーマ生成を再度有効にする必要があります。

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