簡體   English   中英

如何使用CBV根據用戶/組權限限制頁面或模型?

[英]How To Restrict Pages or Models based on User/Group Permissions with CBVs?

借助Sk1p解決方案:

從django.contrib.auth.decorators導入Permission_required

ip_manager / urls.py:

urlpatterns = patterns('',
    url(r'^(?P<groupname>\w+)/tag/add/$', permission_required('ip_manager.add_tag')(TagFormView.as_view()), name='tag-add'),
)

我試圖限制用戶添加,更改或刪除模型。 我只使用CBV。 我看了以下示例。

裝飾課

如何在基於Django類的視圖上使用Permission_required裝飾器

我的問題是我想告訴用戶需要訪問哪個權限,但是我不確定如何指定它。 我嘗試將登錄權限作為arg傳遞給需要登錄的用戶,並在未設置權限的用戶上對其進行了測試。 該方法不起作用,它仍然允許我添加新的模型對象。 有沒有人有什么建議?

ip_manager / urls.py:

urlpatterns = patterns('',
    url(r'^(?P<groupname>\w+)/tag/add/$', login_required(TagFormView.as_view(), 'ip_manager.add_tag'), name='tag-add'),
)

謝謝,瑞安

如果要指定所需的權限,則需要使用permission_required裝飾器 因為它需要一個參數,所以類似以下的內容應該起作用:

permission_required("your_permission")(TagFormView.as_view())

文檔中也對此進行了說明: 裝飾基於類的視圖

限制基於類的視圖(而不是URL路由)權限的另一種方法是在管理面板中使用Groups ,並在視圖本身上使用PermissionRequiredMixin 只需像這樣應用PermissionRequiredMixin ...

class MemoCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
    permission_required = 'memos.can_change_memo'
    model = Memo

...然后將用戶添加到管理面板中的特定Groups ,並將can_change_memo權限應用於該Group ..或者更好的是,在注冊時將該組應用於用戶!

暫無
暫無

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

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