2010-06-29 64 views
1

在我的URL配置URL訪問,我有:Django的 - 限制超級用戶

url(r'^sssssh/(.*)', staff_only_app.site.root), 

我希望做的是限制這種應用到超級用戶的任何訪問。 我嘗試這樣做:

url(r'^sssssh/(.*)', user_passes_test(staff_only_app.site.root, lambda u: u.is_superuser)), 

但抱怨說,裝修恰恰1的說法,我說出了兩個。

我想通過functools.partial來裝飾currator,但是我想我可能會錯過一些更明顯的解決方案。

+1

爲什麼你想在urls.py中做到這一點,你應該這樣做views.py – KillianDS 2010-06-29 10:30:41

+1

@KillianDS我想在urls.py中做到這一點,因爲我不想去編輯所有的視圖在一個可重複使用的應用程序,我沒有寫。 – Agos 2010-06-29 21:22:00

回答

3

很晚答覆...

我認爲這只是一個快速和骯髒的語法掛斷:

url(r'^sssssh/(.*)', user_passes_test(lambda u: u.is_superuser)(staff_only_app.site.root), 

^我認爲這是奇怪,但正確的語法將參數傳遞給裝飾器。

但第二個想法,你只能裝飾視圖功能,而不是整個網站。

-1

使用user_passes_test修飾符。

!例如:

from django.contrib.auth.decorators import user_passes_test 

@user_passes_test(lambda u: u.is_superuser) 

def sample_view(request): 
+1

請仔細閱讀下面的問題和評論,說明我爲什麼要(編輯)在網址中執行此操作,而不是在視圖中執行此操作。 – Agos 2011-02-22 23:57:31