2012-02-10 15 views
1

私はDjango 1.3python 2.7を使用しています。私はDjango admin app.Whatを使用しています。superuserがログインする際にadmin/index.htmlがデフォルトの動作であるが、スーパーユーザではない他のユーザがログインした場合、データが「abc.html」などの全く異なるテンプレートで表示されるはずです。これを行うにはどうすればよいですか?管理者ビューをオーバーライドする必要があると思いますこれは分かりませんが?あなたはより多くの情報プラザのコメント:)管理ビューを無効にする - Django

答えて

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 

これで、通常のユーザー用とスーパーユーザー用の2つのAdminSiteオブジェクトを作成できます。

2つの管理サイトのURLに2つのパスを設定できます。

スーパーユーザーは両方のパスを使用できます。

通常のユーザーは、URL内の通常のユーザーパスのみを使用できます。

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

0

をしたいhelp.If

あなたがadminサイトのビューを変更する必要があります。 Djangoドキュメンテーションはすべて詳細に言及しています。何かエラーがある場合はhttps://docs.djangoproject.com/en/1.3/ref/contrib/admin/を確認してから、コードの詳細を書き戻してください。

+1

私は知っていますが、どのログインビューを表示していますか? – Anshul

3

ユーザーがスーパーユーザーであるかどうかを確認するミドルウェアを作成します。ユーザーがsupeuserでない場合、デフォルトのページの代わりにカスタム管理ページにリダイレクトされます。

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

+0

@anksこの例は私の頭の上からのものです。何もテストされていません。 – Meitham

関連する問題