web-dev-qa-db-ja.com

Djangoのスタッフ、管理者、スーパーユーザーの違いは何ですか?

Djangoにはスーパーユーザー、スタッフ、管理者がいます…

スーパーユーザーとスタッフはDjango.contib.auth.models.UserManagerにいます。次に、Django-admincreatesuperuserコマンドがあります。

管理アプリがあります…違いは何ですか?

39
eugene

Djangoドキュメンテーション:

Djangoの最も強力な部分の1つは、自動管理インターフェースです。最良のことは、簡単にカスタマイズできることです。

スーパーユーザーとしてログインしている場合、オブジェクト(モデル)を作成、編集、削除するアクセス権があります。

スタッフフラグを使用して、スタッフユーザーを作成できます。 「スタッフ」フラグは、ユーザーが管理インターフェイスへのログインを許可されるかどうか(つまり、そのユーザーが組織内の「スタッフメンバー」と見なされるかどうか)を制御します。この同じユーザーシステムを使用して、パブリック(つまり、非管理)サイトへのアクセスを制御できるため、このフラグはパブリックユーザーと管理者を区別します。

「通常の」管理者ユーザー、つまり、アクティブで、スーパーユーザー以外のスタッフメンバーには、割り当てられた権限を通じて管理者アクセスが許可されます。管理インターフェイスを介して編集可能な各オブジェクトには、作成したすべてのモデルの作成権限、編集権限、削除権限の3つの権限があります。

Djangoの管理サイトでは、特定のユーザーが必要なインターフェースの部分のみにアクセスできるようにするために使用できる許可システムを使用しています。ユーザーを作成するとき、そのユーザーには権限がありません。ユーザーに特定の権限を与えるのはあなた次第です

28
Aks

Djangoのユーザータイプは1つだけです。その単純なUser。ユーザーに与える許可に応じて、デフォルトで異なることを実行できるようにします。

  1. 通常のユーザーは誰でも認証できます(それがユーザーの重要なポイントであり、ログインできます)。
  2. staffフラグを割り当てられたユーザーは、寄稿された管理アプリにログインできます。これ以外には、他の特別な特権はありません。
  3. これらはアクティブまたは非アクティブに設定できます。アクティブなユーザーのみがログインを許可されます。

スーパーユーザーは、すべての権限を持つユーザーを作成するための便利な方法です。デフォルトでは、スタッフとすべての権限が与えられた通常のユーザーです。

ADMINS および MANAGERS 設定もあります。

これらは、サイトが運用環境で実行されているとき(つまり、DEBUGがFalseのとき)に通知に使用されます。

管理者には、トレースバックを生成するエラーが通知されます。トレースバックとリクエストに関する情報がメールで送信されます。存在しないリンクを誰かがリクエストすると(基本的に404が発生したときに)、マネージャーにメールが送信されます。

21
Burhan Khalid

スーパーユーザーは自動的にすべての権限を持ちます(has_permはTrueを返します。

スタッフは管理ページにログインできます。

管理ページは、表示されるように設定したモデルへのシンプルなインターフェースです。現在のユーザーが適切な権限を持っているモデルのみが表示されます。

そのため、誰かがスーパーユーザーとスタッフの両方である場合、管理者サイトにログインして、管理者サイトに表示されるすべてのモデルに完全にアクセスできます。

10
RemcoGerlich