[英]Overriding admin views - Django
我正在使用Django 1.3
和python 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.