簡體   English   中英

Django共享數據庫,每個用戶具有受限的視圖

[英]Django shared db with restricted views per user

我有一個要共享的數據庫。 如果某個對象具有某個特定值,則需要特定的用戶才能查看和編輯它。 沒有其他用戶可以查看或編輯這些對象。

我正在嘗試理解應該怎么做。 我不太了解django。 我目前正在尋找有條件的觀點。 不知道是否有可能,因為我不知道視圖條件是否可以過濾對象。

如果有人能指出正確的方向,我將不勝感激。

您應該使用視圖來限制用戶可以看到和可以執行的操作。 例如,要將用戶可以查看的列表限制為僅由他們創建的用戶,則告訴視圖中的查詢僅獲得創建的用戶等於請求用戶的用戶。 使用模型視圖,您可以修改功能以獲取所需的數據。 如果將get queryset函數更改為僅將用戶作為請求用戶的位置,則將獲得所需的內容。

   def get_queryset(self):
        return self.model.objects.filter(user=self.request.user)

視圖是用戶獲取數據的邏輯,因此您可以在此處設置條件。

對於更新,您在請求更新視圖中的表單之前先進行驗證。 這告訴代碼,如果用戶請求的對象是該用戶創建的注釋,則拒絕該權限。

def dispatch(self, request, *args, **kwargs):
    obj = self.get_object()
    if obj.user != self.request.user:
        raise PermissionDenied  # HTTP 403
    else:
        return super(UpdateView, self).dispatch(request, *args, **kwargs)

將這些函數放在視圖類中,並確保模型中具有用戶字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM