【发布时间】:2018-10-06 20:04:55
【问题描述】:
在我的 DRF 项目中,我有 2 个应用程序,Users 和 Products。 Products 有 2 个模型:Category 和 Product。我的根 URL conf 看起来像这样
api_urls = [
path('users/', include('users.urls')),
path('products/', include('products.urls'))
]
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include(api_urls))
]
和 products.urls
urlpatterns = [
path('', views.ProductListCreateAPIView.as_view())
]
我希望我的 API 方案类似于
/api/users/
/api/products/
/api/categories/
现在,这对前两个 URL 工作正常,但显然不是第三个,即如果我要添加
path('categories', views.CategoriesListCreateAPIView.as_view())
对于我的 products.urls,URL 方案将是
/api/products/categories/
我的问题是,有没有办法在不将Category 拆分成自己的应用程序的情况下实现/api/categories/ 的目标?我觉得保证拥有自己的应用程序似乎太微不足道了,应该与Product 在同一个应用程序中。显然,我想我可以直接在根 URL conf 中导入视图,但这并不像是一个“干净”的解决方案。我应该考虑为类别创建一个单独的应用程序吗? Product 模型与 Category 有外键关系,对我来说,感觉好像 2 个单独的应用程序只会让事情变得复杂。
【问题讨论】:
-
没有根本原因需要将其拆分为不同的应用程序。 Django 应用程序只是一种构造代码和命名数据库表的便捷方式。 Django rest 框架包括它自己的 url 路由器,它在底层 django 路由之上添加了额外的功能。这正是 drf 路由器的用例。 django-rest-framework.org/api-guide/routers
-
@HåkenLid 您能否提供一个使用路由器的这种场景的工作示例?
-
这在我看来是一个非常典型的 API 结构,所以我喜欢的官方文档中的示例应该可以工作。
标签: django django-rest-framework django-urls