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

PythonDjangoPython 3.7Django 2.0

Python Problem Overview


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.

https://stackoverflow.com/questions/57123611/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'

Python Solutions


Solution 1 - Python

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

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

Solution 2 - Python

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTimView Question on Stackoverflow
Solution 1 - PythonOmkarView Answer on Stackoverflow
Solution 2 - PythonbwdmView Answer on Stackoverflow