Skip to content

SchemaGenerator fails with message "object has no attribute 'get_serializer_class'" #4265

Closed
@geekashu

Description

@geekashu

Hi,

I just upgraded to 3.4.0 of django-rest-framework. In my application i have a API view which doesn't have a GET method implemented only POST is there.

Now i am trying to auto generate the schema using the tutorial given. Here is my code for the schema view.

from rest_framework.decorators import api_view, renderer_classes
from rest_framework import renderers, schemas

@api_view()
@renderer_classes([renderers.CoreJSONRenderer, ])
def schema_view(request):
    generator = schemas.SchemaGenerator(title='Bookings API')
    return generator.get_schema()

Now when i try to view this schema i am getting this error.

Traceback (most recent call last):
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/django/core/handlers/base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/django/core/handlers/base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/rest_framework/views.py", line 466, in dispatch
    response = self.handle_exception(exc)
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/rest_framework/views.py", line 463, in dispatch
    response = handler(request, *args, **kwargs)
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/rest_framework/decorators.py", line 52, in handler
    return func(*args, **kwargs)
  File "/home/ashish/Projects/backend/oyster/config/swagger.py", line 7, in schema_view
    generator = schemas.SchemaGenerator(title='Bookings API')
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/rest_framework/schemas.py", line 74, in __init__
    self.endpoints = self.get_api_endpoints(patterns)
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/rest_framework/schemas.py", line 128, in get_api_endpoints
    prefix=path_regex
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/rest_framework/schemas.py", line 121, in get_api_endpoints
    link = self.get_link(path, method, callback)
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/rest_framework/schemas.py", line 196, in get_link
    fields += self.get_serializer_fields(path, method, callback, view)
  File "/home/ashish/Env/backend/lib/python3.4/site-packages/rest_framework/schemas.py", line 256, in get_serializer_fields
    serializer_class = view.get_serializer_class()
AttributeError: 'LogoutView' object has no attribute 'get_serializer_class'

Here is my LogoutView class..

class LogoutView(APIView):
    permission_classes = (AllowAny,)

    def post(self, request):
        return self.logout(request)

    def logout(self, request):
        try:
            request.user.auth_token.delete()
        except (AttributeError, ObjectDoesNotExist):
            pass

        logout(request)

        log.info('Logout Successful | %s' % request.user)
        content = {'success': settings.USERS_LOGOUT_MSG}
        return Response(content, status=status.HTTP_200_OK)

Am i missing something? What needs to be done to auto generate the schema?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions