2017-05-23 92 views
0

我在學習Django驗證,看起來棒極了!
然而,它引起了我的注意,它似乎有點過於基於模型。不是基於模型的Django驗證

我想到的是,讓我們說我有兩個網頁(監測,統計),他們都使用相同的模型(事件表)。我想要的是向不同的用戶添加權限以訪問監控和統計信息,如:can_use_monitoring,can_use_statistics。
我認爲將相同的模型添加到這兩個權限並不是問題,但似乎不必要和誤導。或者我錯過了什麼?

你會怎麼做到這一點?

感謝,

/////// UPDATE /////////
一個念頭:我想是一個基於網頁具有權限和不在型號上。有可能一個頁面使用更多的模型,我不知道應該爲該權限分配哪個模型(因爲我只能使用一個)。

回答

0

我認爲將相同的模型添加到這兩個權限並不是問題,但似乎不必要和誤導。或者我錯過了什麼?

是的,將相同的模型添加到不同的權限沒有問題。

通常您應該使用Django's Groups功能。創建一個擁有許可權限的組,然後繼續向該組添加用戶。

https://docs.djangoproject.com/en/1.11/topics/auth/default/#django.contrib.auth.decorators.user_passes_test

一個念頭:我想是一個基於網頁而不是模型具有權限。有可能一個頁面使用更多的模型,我不知道應該爲該權限分配哪個模型(因爲我只能使用一個)。

這可以通過使用user_passes_testpermission_required修飾器裝飾您的視圖來實現。 More here.here

from django.contrib.auth.decorators import user_passes_test 
@user_passes_test(email_check) 
def my_view(request): 
    ... 

def email_check(user): 
    return user.email.endswith('@example.com') 
+0

NOSH感謝您的答覆!我認爲根據答案,除了從模型出發之外別無他法。你將如何處理我在原始問題的UPDATE部分提到的情況(有兩頁,使用相同的模型)?只需添加一個'can_use_monitoring'權限並選擇其中一個使用的模型? – Viktor

+0

是的,如果你想使用django權限API來管理用戶。該公約將使用您正在處理的組中最重要的模型。或者你可以簡單地使用'user_passes_test'並傳入一個自定義函數。例如:檢查用戶是否屬於像「system-admins」這樣的組的功能。 – Nosh

+0

好的,謝謝Nosh! – Viktor