2015-06-23 34 views
0

我對DRF相對比較陌生,但發現視圖是編寫RESTful API的一種令人驚歎的抽象技術。不過,我很難將Viewset與REST方法關聯起來。假設我有一個用於Userprofiles的視圖集,並且有人在客戶端上創建一個配置文件。視圖如何與其餘方法對齊

  1. 應該發送一個PUT還是POST?
  2. 該請求應該鏈接哪個url,http://userhttp://user/new_id
  3. 如果我希望此配置文件只能由用戶或管理員訪問(所有CRUD操作),那麼我應該在哪裏處理讓其他人無法訪問的代碼?
  4. 我應該創建一個新的權限嗎?如果是,我應該在has_permission/has_object_permission中處理休息方法嗎?

我已經閱讀了教程,並且知道權限/ mixins如何工作,但我無法在這裏連接這些點。

回答

1

1 /一般而言,POST用於創建新的,PUT用於更新。請參閱SimpleRouter上的文檔以顯示各種類型的Http方法如何與Django後端中的各種操作對齊。

2 /你會發現不同的情況需要不同的路由方法。如果你的標準是標準的,你可能想要像上面的例子那樣使用SimpleRouter。在這種情況下,創建新用戶將是POST/user/的請求,並且更新用戶將是PUT請求/user/{{user_id}}/

3要限制對各種API方法的訪問,您希望使用權限。有可能您可以使用DRF的Custom Permissions之一。我發現一般情況下,如果您只想讓用戶訪問他/她自己的配置文件,則可以更容易地在視圖內使用條件邏輯(例如,如果request.user.pk不是pk,則返回視圖邏輯中的DRF PermissionDenied exception那REST URL。很多時候,我用從Django BracesUserPassesTestMixin,即能很成功的過濾器的用戶權限。

4 /我猜Django的牙套混入上述回答這個問題,你應該包括test_func方法如果您使用的是Django支撐,如果您想授予用戶訪問權限,則返回True,否則返回False

希望這會有所幫助!我同意這些是DRF的難度部分也許其中一些可能更有效地融入到源頭中。祝你好運!