【发布时间】:2018-09-20 22:39:35
【问题描述】:
我的问题归结为 Django 中 REST 和视图的最佳实践之一。我正在为我当前的项目重新设计 REST api,其中包括重新设计我们的视图(传统 MVC 中的控制器)。目前,一切都通过 POST 请求进行隧道传输,即使是应该是简单 GET 的东西。
从休息的角度来看,所有作业的列表应该返回一个如下 URL:
api/jobs/
应使用以下命令检索单个作业(ID 为 1):
api/jobs/1
最后这应该返回属于作业 1 的所有任务
api/jobs/1/tasks/
这是我在新系统中使用的理念,但我对实施感到困惑。这两者应该在 Django 中获得自己的视图,还是应该由一个视图处理两者。
目前我正在使用一个视图,所有相关的 url 都会路由到它,逻辑是这样的;
def get(self, request, id=None, task_id=None):
if id is None:
return Job.objects.all() # This will be the LIST'
if task_id is not None:
return Job.objects.get(id=id).task_set.all()
return Job.objects.get(id=id)
如果增加更多复杂性,这似乎会导致非常复杂和冗长的视图。如果我想为其他资源的任务逻辑添加类似的逻辑,我会继续添加到视图中,还是应该每个都有自己的视图?
【问题讨论】:
标签: django rest model-view-controller django-rest-framework