我如何构建Django视图类?

问题描述 投票:0回答:1

我和一个朋友正在从事一个项目。我有一个处理意见的结构。如果使用的是User模型,并且想编写用于CRUD操作的代码,则可以使用四个不同的类进行编写。每个人都这样一个:

class CreateUser(FormView):
    <code here>


class ReadUser(DetailView):
    <code here>


class UpdateUser(UpdateView):
    <code here>


class DeleteUser(DeleteView):
    <code here>

每个都有各自的URL模式:

urlpatterns = [
    path("auth/users/create-user/", CreateUser().as_view(), name="create_user"),
    path("auth/users/<int:pk>", ReadUser().as_view(), name="user_detail"),
    path("auth/users/<int:pk>/update", UpdateUser().as_view(), name="update_user"),
    path("auth/users/<int:pk>/delete/", DeleteUser().as_view(), name="delete_user")
]

他建议,所有功能都应该在一个类中,并由方法执行,就像这样:

class UserView(View):
    <class variables>

    def post(self, request):
        <code here>

    def get(self, request):
        <code here>

    def patch(self, request):
        <code here>

    def delete(self, request):
        <code here>

并且urlpatterns为:

urlpatterns = [
    path("auth/users/", UserView.as_view(), name="user")
]

我的问题是哪个更好:

  1. Django-wise;
  2. 通常;
  3. 在django中从服务器端渲染时;
  4. 使用Django编写API时

第一个或第二个?

python-3.x api oop django-rest-framework django-views
1个回答
0
投票

我认为您朋友的建议是正确的,我会走得更远。

我建议您使用Django Rest Framework。它已经具有基于类的视图,可以为您节省大量的编码时间。

根据您要介绍的定制程度,可以选择:

[API ViewsGenerics Classes with Mixins

此外,在混合用户注册和用户身份验证时,我会很小心。通常,将资源“用户”和“身份验证”分开。

作为最后的建议,我建议您避免自己建立注册和认证过程-尽管这是一个很好的学习练习,并寻求现有的解决方案,无论是通过公共存储库还是可以使用的各种图书馆为您提供令牌生成,OAUTH2,社交注册和身份验证(Social Django fi)等。

© www.soinside.com 2019 - 2024. All rights reserved.