【问题标题】:Should I use both Django views and Rest Framework together and how?我应该同时使用 Django 视图和 Rest Framework 吗?如何使用?
【发布时间】:2020-07-04 22:24:17
【问题描述】:

我将创建一个主要依赖于基本 CRUD 操作但将来可能会发生变化的 Web 应用程序(例如从另一个 Web 服务获取数据)。我还将为我的网络应用程序创建一个移动应用程序,以便执行相同的 CRUD 操作,并且移动应用程序将使用我的网络应用程序的 REST API。

所以问题是我应该遵循哪种方式来完成这些计划?我应该先创建 REST API,然后在我的常规 Django 模板中使用它吗?还是应该分别创建 Django 模板视图(CBV,即 CreateView、UpdateView、DeleteView、ListView)和 REST API 视图?

我真的很困惑,因为我不知道人们对这些应用做了什么。你能帮我制定路线图吗?你会做什么,为什么?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    我可能只是创建一个api 应用程序,它只有 DRF 视图、序列化程序、路由器、权限类等(只包含所有其余的框架对象)。您的其他应用程序将是包含您的模型 CBV 表单等的普通 django 应用程序。

    然后,例如,当您创建序列化程序时,您只需使用 from myapp.models import MyModel 来引用特定于应用的模型。

    我以前使用过这种结构,它似乎工作得很好。

    api
     - serializers.py
     - viewsets.py
     - custom_permissions.py
     - urls.py
     - routers.py
    app_1
     - views.py
     - models.py
     - forms.py
     - tests
         - test_models.py
         - test_views.py
     - urls.py
    app_2
     - views.py
     - models.py
     - forms.py
     - tests
         - test_models.py
         - test_views.py
     - urls.py
    
    manage.py
    etc etc
    

    【讨论】:

    • 但是,因为您必须在 Django 应用程序和 REST API 的视图中编写相同的代码,所以不重复自己的原则不是很糟糕吗?例如,当您创建帖子时,您将向某些服务发送请求(用于检查垃圾邮件的 Akismet、用于向相关用户发送消息的 twitter 等)。您必须在两个视图(Django 应用程序和 REST API)中执行这些操作。我错了吗?还是可以为此类项目重复那么多?
    • 我认为 Django rest 框架减少了你必须用视图集和模型视图集编写的代码量,所以你并没有真正重复代码,如果你有所谓的功能例如,当保存帖子时,您可以使用 post_create 信号或覆盖对象的 save 方法,这样您就可以在一个地方拥有该逻辑
    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多