簡體   English   中英

覆蓋管理員視圖-Django

[英]Overriding admin views - Django

我正在使用Django 1.3python 2.7 。我正在使用Django管理應用程序。我想要的是當superuser登錄時,所有模式都應顯示admin / index.html,這是默認行為,但如果有其他用戶登錄那不是超級用戶,那么應該顯示一個與我的數據完全不同的模板(例如“ abc.html”)。我該怎么做?我想我需要重寫一些管理視圖來執行此操作,但不知道嗎?

請幫助。如果您想了解更多信息,請評論:)

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

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

您必須更改管理站點的視圖。 Django文檔詳細提到了所有內容。 如果您有任何錯誤,請檢查https://docs.djangoproject.com/en/1.3/ref/contrib/admin/ ,然后請回復一些代碼詳細信息。

您可以使用其他權限規則創建已修改的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中的普通用戶路徑。

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

暫無
暫無

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

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