我对DRF相对较新,但发现viewsets是一种用于编写RESTful API的惊人抽象技术。我很难将Viewsets与REST方法联系起来。让我们说我有一个Userprofiles的视图集,有人在客户端创建一个配置文件。
我已经完成了教程,并且知道权限/ mixin如何工作,但我无法在这里连接这些点。
答案 0 :(得分:1)
1 /通常,POST
用于创建新的,PUT
用于更新。请参阅SimpleRouter上的文档,以了解各种类型的Http方法如何与Django后端中的各种操作保持一致。
2 /您会发现不同的情况需要不同的路由方法。如果你的是标准的,你可能想要像上面的例子一样使用SimpleRouter。在这种情况下,创建新用户将是对POST
的{{1}}请求,更新用户将是对/user/
的{{1}}请求。
3 /要限制对各种API方法的访问,您希望使用权限。您可以使用DRF Custom Permissions之一。我发现,一般情况下,如果您只想让用户访问他/她自己的个人资料,那么在视图中使用条件逻辑会更容易(即返回DRF PermissionDenied exception视图逻辑如果PUT
不是该REST网址的pk。通常情况下,我使用了来自Django Braces的/user/{{user_id}}/
,这对于过滤用户非常有效权限。
request.user.pk
方法返回UserPassesTestMixin
,否则test_func
。
希望这有帮助!我同意这些是DRF的难点部分,也许其中一些可以更有效地纳入源。祝你好运!