はじめに
Django REST framework(DRF)ではかんたんな手順でAPIスキーマをきれいなUIで確認する事ができます。
こういう感じでurls.pyに記述するだけで実装できます.
urls.py
from django.urls import path, include
from rest_framework.documentation import include_docs_urls
docs_view = include_docs_urls(
title='my drf API',
description='This is an awesome API',
)
urlpatterns = [
path('docs/', docs_view),
]
エラーがでた
docs/
にアクセスして確認してみると
AttributeError: 'AutoSchema' object has no attribute 'get_link'
と表示されエラーになりました.なんでや
環境
Python 3.7
django 2.2.5
djangorestframework 3.10.3
coreapi 2.3.3
DRF 3.10以上だと発生するエラー
3.10 Announcement
こちらによるとdrf3.10からはSchema生成にCoreAPIからOpenAPIを用いるようになり,将来的にはバージョン3.12でCoreAPIはDRFから削除される方針とのことです.
今回利用したモジュールはCoreAPIを使っているんですね.
OpenAPIのかわりにCoreAPIをつかうためにはsettings.py
に以下を書き加えます.
settings.py
REST_FRAMEWORK = {
...
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}
動いた!!!
##まとめ
drf3.10以降で
AttributeError: 'AutoSchema' object has no attribute 'get_link'
とエラーが出たり,CoreAPIが必要なモジュールを使うときは以下を記述する.
settings.py
REST_FRAMEWORK = {
...
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}
最後までお読みいただきありがとうございます.