2016-09-05 31 views
-1

我正在學習Django + DRF + React,並且我達到了保護一些端點的階段。有些更容易保護,只是一個權限,所以只有創建特定對象的用戶(和管理員)才能看到它。有一個端點對我來說很棘手。這是一個GET調用和返回是這樣的:Django Rest Framework - 終端的最佳途徑?

{book: "Who am I and how come", 
id: "whatever31", 
reading: ["user1", "user2"]} 

我想根據發出請求(會話AUTH)的用戶,以保護該端點所以只要求從user1user2未來可進入此對象(也,不暴露reading字段,但這可能是一個不同的討論)。我應該在DRF視圖上使用自定義權限嗎?我應該在queryset方法中使用過濾器嗎?也許兩個?

+0

你看着創建控制器上的裝飾?聽起來像這將是它的地方。 http://stackoverflow.com/questions/5469159/how-to-write-a-custom-decorator-in-django – KVISH

回答

1

自定義權限,就像創建一個裝飾,兩者的匹配你需要什麼:

class InReader(permissions.IsAuthenticated): 
    def has_object_permission(self, request, view, obj): 
     return request.user in obj.reading 
+0

而當獲得這些對象作爲列表,我想只有一個匹配的權限將返回? – vicusbass

+0

這只是返回true或false來告訴request.user在obj.reading列表中與否。 – Windsooon

+0

我想你的例子應該使用'has_object_permission'來代替,不是嗎?無論如何,謝謝,很好的建議。 – vicusbass