簡體   English   中英

Django用戶權限/視圖?

[英]Django User permissions/views?

我正在使用基於Django類的視圖。

views.py

class ReportListView(LoginRequiredMixin, ListView):
    model = Report

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


class ReportDetailView(LoginRequiredMixin, DetailView):
    model = Report


class ReportUpdateView(LoginRequiredMixin, UpdateView):
    model = Report


class ReportCreateView(LoginRequiredMixin, CreateView):
    model = Report


class ReportDeleteView(DeleteView):
    model = Report

如您所見,這些是最通用的視圖,但是它們都只代表當前用戶的數據。

當前,任何用戶都可以查看/查看其他用戶的數據。

我看到的一種方式是,人們將像上面那樣定義他們的get_queryset方法。 這種方法僅過濾呈現的數據,但用戶仍然可以通過url訪問被禁止的數據(前提是他知道/猜測ID)。

如何限制對其他用戶資源的訪問?

我知道了。 我創建了一個Mixin,其中對用戶的查詢集進行了評估。

class BaseMixin(object):    
    def get_queryset(self):
        return DnevnaBiljeska.objects.filter(igrac=self.request.user.igrac)

class ReportListView(LoginRequiredMixin, BaseMixin, ListView):
    model = Report

這樣,我可以為每個視圖分別在進一步的查詢集篩選上調用超級。

在訪問任何視圖之前,請確保當前用戶是所查看實例的所有者。

class ReportDetailView(LoginRequiredMixin, DetailView):
    model = Report

    def get_object(self,queryset=None):
        obj = super(Report, self).get_object(queryset=queryset)
        if obj.user != self.request.user:
            raise Http404
        return obj

暫無
暫無

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

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