Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix " AttributeError at /api/doc 'AutoSchema' object has no attribute 'get_link' " error in Django

We are practicing an example of REST API on the Internet.

However, the following error occurred.

I tried a way in this link, but the situation hasn't changed.

why swagger raises unclear error - Django

from django.contrib import admin
from django.conf.urls import url, include
from rest_framework import routers
from rest_framework_swagger.views import get_swagger_view

import consumer.api

app_name = 'consumer'

router = routers.DefaultRouter()
router.register('consumers', consumer.api.ConsumerViewSet)

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/doc', get_swagger_view(title='Rest API Document')),
    url(r'^api/v1/', include((router.urls, 'consumer'), namespace='api')),
]
Exception Type: AttributeError at /api/doc
Exception Value: 'AutoSchema' object has no attribute 'get_link'
like image 885
Tim Avatar asked Aug 26 '19 08:08

Tim


2 Answers

It worked for me, When I added below into Settings.py

REST_FRAMEWORK = { 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema' }
like image 194
Omkar Avatar answered Nov 04 '22 02:11

Omkar


As mentioned by @vctrd, this error may be due to CoreAPI support being deprecated in favor of OpenAPI since DRF 3.10:

Since we first introduced schema support in Django REST Framework 3.5, OpenAPI has emerged as the widely adopted standard for modeling Web APIs.

This release begins the deprecation process for the CoreAPI based schema generation, and introduces OpenAPI schema generation in its place.

You'll still be able to keep using CoreAPI schemas, API docs, and client for the foreseeable future. We'll aim to ensure that the CoreAPI schema generator remains available as a third party package, even once it has eventually been removed from REST framework, scheduled for version 3.12.

As such, the generation of API schemas seems to have been made more convenient in the recent DRF versions if you use OpenAPI instead of Core API. The documentation of DRF OpenAPI schema generation can be found at: https://www.django-rest-framework.org/api-guide/schemas/

But if it is desirable to use Core API instead for whatever reason, @Omkar's answer will be the solution.

like image 34
bwdm Avatar answered Nov 04 '22 02:11

bwdm