私の知る限り、django で使用できるアクセス許可レベルは 3 つあります (django 自体によるものか、サードパーティのアプリを使用するかによる)。1) モデルベースのパーミッション 2) オブジェクトベースのパーミッション 3) 行ベースのパーミッション
これら 3 つのレベルの権限システムの正確な違いを教えていただければ幸いです。
私の知る限り、django で使用できるアクセス許可レベルは 3 つあります (django 自体によるものか、サードパーティのアプリを使用するかによる)。1) モデルベースのパーミッション 2) オブジェクトベースのパーミッション 3) 行ベースのパーミッション
これら 3 つのレベルの権限システムの正確な違いを教えていただければ幸いです。
その情報をどこで入手したかはわかりませんが、少しでも正確ではありません。Django には技術的に許可システムがありません。contrib アプリは「権限」のシステムを追加しますが、これauth
はオプションであり、別のものに完全に置き換えることができます。アプリ (これadmin
も contrib パッケージであり、オプション) は を使用するauth
ため、Django 管理者について話している場合、またはauth
独自のアプリでパッケージを使用している場合は、話すことができます。
にはauth
、 、User
、Group
およびがありPermission
ます。User
s には「スーパーユーザー」または「通常の」ユーザー フレーバーがあり、 syncdb ( に含まれています)Permission
を実行すると、プロジェクト内のすべてのモデルにcan_add、can_change、および can_delete の 3 つの s が自動的に取得されます。「スーパーユーザー」 ( ) としてマークされた s は、任意のモデルに対して任意のアクションを実行できます。他のユーザーには、 が明示的に割り当てられている必要があります。さらに、 にが割り当てられ、それらの権限を継承するに割り当てられている場合があります。auth
INSTALLED_APPS
User
is_superuser == True
Permission
Group
Permission
User
Group
したがって、ユーザーはどのモデルに対しても何も実行できない可能性があり、一部またはすべてのモデルに対して追加、変更、または削除機能を組み合わせたり、任意のモデルに対して何かを実行するための完全なアクセス権を持っていない可能性があります。「インスタンス」という意味での「オブジェクトベース」のアクセス許可の概念はありません。モデルのすべてのインスタンスを編集することも、まったく編集しないこともできます。「行ベース」の許可という概念もありません。とにかく、データベース テーブルの行はモデルのインスタンスにすぎません。