API views are specialized for REST calls (with json request and response), while normal views are more general, according to this page :
APIView classes are different from regular View classes in the following ways:
- Requests passed to the handler methods will be REST framework's Request instances, not Django's HttpRequest instances.
- Handler methods may return REST framework's Response, instead of Django's HttpResponse. The > view will manage content negotiation and setting the correct renderer on the response.
- Any APIException exceptions will be caught and mediated into appropriate responses.
- Incoming requests will be authenticated and appropriate permission and/or throttle checks will be run before dispatching the request to the handler method.
I'm not super excited about the class-based approach - for many views I think functions are more readable. But in this case it has some extra functions, not just different structure.