【问题标题】:Django Rest Framework organizing ViewSets and RoutersDjango Rest Framework 组织视图集和路由器
【发布时间】:2015-01-23 15:06:22
【问题描述】:

您好,我的问题可能是关于在 Django Rest Framework 中组织 ViewSet 和相应路由器时的最佳实践。

根据官方文档,路由器应该存储在urls.py,视图集应该存储在views.py

我的想法是将视图集放在一个单独的文件中,例如 viewsets.py,这样我们就不会在同一个文件中混合普通的 Django 视图和 DRF 视图集,从而提高可读性。

路由器也是如此,我们将在每个应用程序中创建一个名为 routers 的文件,然后注册到主默认路由器实例。

这些是我的想法,但我不知道如何:

1º 以正确的方式执行此操作(视图集路由器和所有的注册,我应该将 DefaultROuter 放在 __init__.py 中吗?)

2º有更好的方法吗?

基本上我想通过 django 视图和 DRf 视图集来分离每个应用程序和每个应用程序内部的逻辑

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    不管怎样,我总是在我的 Django 应用程序中创建一个单独的 api/ 子目录来保存所有与 Django REST Framework 相关的文件。这只是一种做事方式,但它有助于在我们的应用程序中保持关注点分离。

    层次结构看起来像这样......

    • Django 项目/
      • Django 应用程序/
        • views.py
        • models.py
        • urls.py
        • API/
          • serializers.py
          • viewsets.py

    【讨论】:

    • 我喜欢这个主意。您在哪里以及如何添加新路线?
    • 我实际上一直将我的路由器保存在根 urlconf 文件中,因为我认为我的 API url 处于根级别,但我可以看到保持分离的论点。如果我们遵循标准 API 命名约定 /api/v1/resource/,那么您几乎会卡在将路由器置于根级别。如果您想让它们保持隔离,我猜在 URL 中添加命名空间可能会起作用 /djangoapp/api/v1/resource/。在根 urlconf 中只包含 yourdjangoapp.api.urls for /djangoapp/.
    • 我能够做到这一点,而无需像我在此处指定的那样直接使用 urls.py:github.com/tomchristie/django-rest-framework/issues/2136
    猜你喜欢
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2018-07-22
    • 2015-09-26
    • 2013-02-17
    • 2013-11-05
    • 1970-01-01
    相关资源
    最近更新 更多