如何将函数基础 api 视图转换为 class 基础 api 视图?

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

在我的项目中,我有以下4个APIs (function base API view)

save_user()
login_user()
get_user_info()
update_user()

我想把它转换成class基础API视图

class UserApi(APIView):

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

  def put():
    #for update user info


那么如何在 class 基本视图中使用 login()。 或者使用函数库视图进行登录?

在单个 views.py 文件中混合使用基于 class 的 API 视图和基于功能的 API 视图是好是坏?

要登录,用户必须提供用户名和密码。这将是一个 HTTP post 请求。您可以仅为 post 创建一个 class-based 视图以供登录并定义 URL 端点。

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

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

使用class-based 视图的主要优点是分离HTTP 方法(get、post、put、delete)和编写re-usable 代码。 DRF 提供了通用的 class-based 视图,可以用更少的代码实现通用功能。

对于登录功能,如果您拥有基于令牌的身份验证,那么拥有 class-based 视图会很有用。因为,你没有提到它,我想说 loginuser 的视图都有 class-based 将有利于一致性和可读性。没有规定不能混合 class-based 和 function-based 视图;这取决于你想要达到的目标,一个不一定比另一个好或坏。