[解決済み] コンテンツタイプやモデルを定義せずに Django のパーミッションを使うにはどうしたらいいですか?
質問
Django アプリケーション内の特定のアクションを制限するために、パーミッションベースのシステムを使用したいと思っています。これらのアクションは特定のモデルに関連する必要はありません (例えば、アプリケーション内のセクションへのアクセス、検索...) ので、私は
ストックパーミッションフレームワーク
を直接使うことはできません。
Permission
モデルはインストールされたコンテンツタイプへの参照を必要とするからです。
独自のパーミッションモデルを書くこともできますが、その場合、Django のパーミッションに含まれる、以下のような良いところを全て書き直さなければなりません。
- ユーザとグループにパーミッションを割り当てる可能性。
-
は
permission_required
デコレータ . -
User.has_perm
および関連するユーザーメソッド。 -
は
perms
テンプレート変数 . - ...
のようなアプリをいくつか確認しました。 django-authority と django-guardian などがありますが、これらはオブジェクト単位のパーミッションを許可することで、モデルシステムにさらに結合したパーミッションを提供しているようです。
モデルを定義することなく、このフレームワークを再利用する方法はありますか?
User
と
Group
を含む) のプロジェクトに適用されますか?
どのように解決するのですか?
Djangoの
Permission
モデル
が必要です。
ContentType
インスタンス
.
これを回避する一つの方法として、ダミーの
ContentType
を作成することです。
app_label
と
model
フィールドには任意の文字列を設定することができます)。
もし、すべてをきれいにしたいのであれば、次のように
Permission
プロキシモデル
で、ダミーの醜い詳細をすべて処理します。
ContentType
のすべての醜い詳細を処理し、"modelless" 権限インスタンスを作成するプロキシモデルです。また、カスタムマネージャーを追加して、すべての
Permission
インスタンスをフィルタリングするカスタムマネージャーを追加することもできます。
関連
-
AttributeError: 'str' オブジェクトには 'decode' という属性がありません。
-
django store to databaseは現地時間より8時間短い?(2021-05-12更新)
-
Django の ForeignKey パラメータの使用法
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] Django は単一のモデルに対してデータをダンプしますか?
-
[解決済み] Django で null を許容するユニークなフィールド
-
[解決済み] Django テンプレート url タグに url パラメータを追加する方法は?
-
[解決済み] Django が ManyToMany リレーションシップからオブジェクトを取り除く
-
[解決済み] 学習に適したオープンソースのdjangoプロジェクト【非公開
-
[解決済み] django のモデルのクラス名を取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
django request.data を修正する AttributeError: 属性を設定できない
-
Django QuerySet マルチテーブル結合/条件付きピッキング/マージ
-
Django ForeignKey逆引きクエリにおけるfilterと_setの効率比較
-
[解決済み] Django-Rest-Framework のシリアライザーで Request.User を取得する方法とは?
-
[解決済み] Djangoテンプレート内でコレクションのサイズを確認するにはどうすればよいですか?
-
[解決済み] Django Forms: 有効でない場合、エラーメッセージとともにフォームを表示する
-
[解決済み] dbなしのdjangoユニットテスト
-
[解決済み] Django admin: データベースフィールドを持たないカスタム list_display フィールドの1つでソートする方法
-
[解決済み] Djangoテンプレートでネストされたforループで一番外側のforloop.counterにアクセスする方法は?
-
[解決済み] list_display - メソッド用のブール型アイコンです。