2012-02-10 105 views
1

我使用Django 1.3python 2.7。我使用的是Django管理應用程序。我想要的是當superuser登錄時,它應該顯示爲admin/index.html,所有模型都是默認行爲,但如果任何其他用戶登錄,這是不是超級用戶,那麼它應該顯示一個完全不同的模板與我的數據(如'abc.html')。我該怎麼做才能做到這一點?我想我需要重寫一些管理視圖做這但不知道?覆蓋管理員意見 - Django

請help.If您想了解更多信息,PLZ評論:)

回答

0

您使用其他權限規則創建了修改的AdminSite類定義。

class SuperUserAdminSite(AdminSite): 
    def has_permission(self, request): 
     return request.user.is_active and request.user.is_staff and request.user. is_superuser 

現在您可以創建兩個AdminSite對象,一個用於普通用戶,一個用於超級用戶。

您可以在兩個管理站點的URL中有兩個路徑。

超級用戶可以使用兩種路徑。

普通用戶只能使用URL中的普通用戶路徑。

https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#adminsite-objects

3

我會創建一箇中間件來檢查用戶是否是超級用戶。如果用戶不是超級用戶,則將他/她重定向到自定義管理頁面而不是默認用戶頁面。

class SuperUserMiddleware(object): 
    def process_request(self, request): 
     user = request.session.user 
     if not user.is_superuser: 
      return HttpResponseRedirect(NON_SUPERUSER_URL) 
     ... 
+0

你能告訴我一個例子嗎?我其實是django的新手。 – Anshul 2012-02-10 11:34:02

+0

@anks這個例子只是從我的頭頂開始,沒有任何東西被測試。 – Meitham 2012-02-10 13:54:01