how to convert function base api views into class base api views?


In my project, I have the following 4 APIs (function base API view)


I want to convert it into class base API view

class UserApi(APIView):

  def post():
    #save user
  def get(): 
    #for get user info

  def put():
    #for update user info

so how to use login() in class base views.
OR use function base view for login?

to use a mixture of class based API view and function base API view in a single file is good or bad?


To login, the user has to provide the username and password. This will be a HTTP post request. You can create a class-based view only for post for login and define the URL endpoint.

class Login(APIView):
    def post(self, request, format=None):
        # authentication related code

urlpatterns = [
    path('login/', Login.as_view()),

The main advantage of using class-based views is to separate the HTTP methods (get, post, put, delete) and write re-usable code. DRF provides generic class-based views that can be used for common functionality with less code.

For the login functionality, having a class-based view is useful if you have token based authentication. Since, you haven’t mentioned about it, I would say having class-based views for both login and user will be good for consistency and readability. There is not rule that you can’t mix class-based and function-based views; it depends on what you are trying to achieve and one is not necessarily good or bad over the other.

Answered By – krskara

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published