カテゴリ: Django 更新日: 2026/02/25

Django認可を完全理解!初心者でもわかるモデルパーミッション(add・change・delete・view)

Django認可でモデルパーミッションを設定する方法(add・change・delete・view)
Django認可でモデルパーミッションを設定する方法(add・change・delete・view)

先生と生徒の会話形式で理解しよう

生徒

「Djangoでログインはできたんですが、人によって操作できる内容を変えるにはどうすればいいんですか?」

先生

「Djangoには“認可”という仕組みがあって、誰が何をしていいかを細かく決められます。特にモデルパーミッションはとても大切ですよ。」

生徒

「モデルパーミッションって難しそうです……パソコン初心者でも理解できますか?」

先生

「大丈夫です。家のカギに例えながら、add・change・delete・viewを一つずつ説明していきましょう。」

1. Django認可とは何かを超かんたんに説明

1. Django認可とは何かを超かんたんに説明
1. Django認可とは何かを超かんたんに説明

Django認可とは、「この人はここまで操作していい」「この人は見るだけ」というように、ユーザーごとの行動ルールを決める仕組みです。現実世界で例えると、会社の中で「入室だけできる人」「編集までできる人」「削除もできる管理者」がいるイメージです。

Djangoには最初から認可の機能が用意されていて、特別なプログラムを書かなくても使えます。この認可の中心になるのが「モデルパーミッション」です。

2. モデルパーミッションとは?初心者向けイメージ

2. モデルパーミッションとは?初心者向けイメージ
2. モデルパーミッションとは?初心者向けイメージ

モデルパーミッションとは、Djangoのモデル(データの設計図)に対して「追加」「変更」「削除」「閲覧」ができるかどうかを決めるカギのようなものです。

たとえば「記事」というモデルがあった場合、記事を新しく作る、内容を書き換える、消す、読む、という4つの基本操作があります。これがadd・change・delete・viewです。

3. add・change・delete・viewの意味を一つずつ解説

3. add・change・delete・viewの意味を一つずつ解説
3. add・change・delete・viewの意味を一つずつ解説

addは「新しく追加する」権限です。ノートに新しいページを書き足すイメージです。

changeは「内容を変更する」権限です。すでに書いてある文字を消して書き直す感じです。

deleteは「削除する」権限です。ページを破って捨てる操作に近いです。

viewは「見るだけ」の権限です。読むだけで、書き込みはできません。

4. Djangoモデルを作ると自動で作られるパーミッション

4. Djangoモデルを作ると自動で作られるパーミッション
4. Djangoモデルを作ると自動で作られるパーミッション

Djangoでは、models.pyにモデルを書くだけで、add・change・delete・viewの4つのパーミッションが自動で作られます。自分で設定しなくても最初から用意されているのが特徴です。


from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()

このモデルを作ってマイグレーションを実行すると、Article用の4つの権限がDjango内部に登録されます。

5. 管理画面でモデルパーミッションを設定する方法

5. 管理画面でモデルパーミッションを設定する方法
5. 管理画面でモデルパーミッションを設定する方法

Django管理画面では、チェックボックスで直感的に認可設定ができます。プログラミング未経験の方でも、マウス操作だけで設定できるのが魅力です。


管理画面 → ユーザー → 権限
☑ article | Can add article
☑ article | Can view article

チェックを入れた操作だけが、そのユーザーに許可されます。まるで鍵を渡すか渡さないかを決める感覚です。

6. Pythonコードでパーミッションを確認する基本例

6. Pythonコードでパーミッションを確認する基本例
6. Pythonコードでパーミッションを確認する基本例

Djangoでは、ログイン中のユーザーが権限を持っているかをPythonコードで確認できます。


if request.user.has_perm("app_name.add_article"):
    print("記事を追加できます")

記事を追加できます

has_permは「権限を持っているか?」を調べる命令です。難しく考えず、「カギを持っているか確認する」と覚えてください。

7. viewパーミッションの重要性と初心者がつまずく点

7. viewパーミッションの重要性と初心者がつまずく点
7. viewパーミッションの重要性と初心者がつまずく点

viewパーミッションは、Django2.1以降で追加された比較的新しい権限です。「表示するだけ」でも制限したい場合に使います。

たとえば、社内専用ページを外部の人に見せたくない場合、このview権限が役立ちます。初心者の方は「見るだけだから安全」と思いがちですが、情報漏えいを防ぐためにも重要です。


if request.user.has_perm("app_name.view_article"):
    print("記事を表示します")

8. グループとモデルパーミッションの関係

8. グループとモデルパーミッションの関係
8. グループとモデルパーミッションの関係

Djangoでは、ユーザー一人ひとりに設定するだけでなく、「グループ」にまとめてパーミッションを設定できます。

たとえば「編集者グループ」にはaddとchange、「閲覧者グループ」にはviewだけ、というように設定できます。これは会社で役職ごとにカギを配るイメージです。

まとめ

まとめ
まとめ

ここまで学んできたDjango認可とモデルパーミッションは、Webアプリケーション開発において非常に重要な基礎知識です。Djangoは標準で認証機能と認可機能を備えており、その中心にあるのがadd、change、delete、viewという四つのモデルパーミッションです。これらを正しく理解することで、ユーザーごとに操作できる範囲を安全に制御できるようになります。

Django認可の仕組みは、ログインしているユーザーがどのデータに対してどの操作を実行できるのかを明確に定義するためのものです。モデルを作成すると、自動的にadd、change、delete、viewのパーミッションが生成されるため、初心者でもスムーズに権限管理を始めることができます。この自動生成の仕組みは、Djangoの大きな魅力の一つです。

addはデータの追加権限、changeは編集権限、deleteは削除権限、viewは閲覧権限です。たとえばブログアプリケーションでは、管理者はすべての権限を持ち、編集者はaddとchangeのみ、一般ユーザーはviewのみ、といった柔軟な設定が可能です。これにより、Djangoで安全なWebアプリケーションを構築できます。

また、管理画面からチェックボックスで直感的に設定できる点も初心者に優しいポイントです。ユーザー単位だけでなく、グループ単位でモデルパーミッションを管理できるため、大規模なWebサービスでも効率よく権限管理が行えます。グループ機能と組み合わせることで、ロールベースアクセス制御のような設計も実現できます。

Pythonコードでhas_permを使えば、ビュー関数やテンプレート内で権限チェックを行うことができます。これにより、権限を持たないユーザーに操作ボタンを表示しない、または処理自体を実行させないといった制御が可能になります。Django認可はセキュリティ対策の基本であり、情報漏えい防止や不正操作防止に直結します。

さらに、viewパーミッションの重要性も忘れてはいけません。閲覧だけであっても、機密情報が含まれている場合は厳密な制御が必要です。Djangoのモデルパーミッションを正しく理解することで、初心者でも安全性の高いWebアプリケーション開発が可能になります。

サンプルプログラムで最終確認

ここで、Django認可とモデルパーミッションの理解を深めるために、Pythonコードで複数の権限を確認する例を見てみましょう。


if request.user.has_perm("app_name.add_article"):
    print("追加権限があります")

if request.user.has_perm("app_name.change_article"):
    print("編集権限があります")

if request.user.has_perm("app_name.delete_article"):
    print("削除権限があります")

if request.user.has_perm("app_name.view_article"):
    print("閲覧権限があります")

追加権限があります
編集権限があります
閲覧権限があります

このように、Djangoではシンプルな記述で認可チェックを実装できます。初心者の方は、まず管理画面でパーミッションを設定し、次にPythonコードでhas_permを使って動作確認を行う流れを身につけると理解が深まります。

先生と生徒の振り返り会話

生徒

Django認可とモデルパーミッションの仕組みがやっと分かってきました。addやchangeやdeleteやviewは、それぞれ操作できる内容を分けるための大切な権限なんですね。

先生

その通りです。Djangoの認証と認可を正しく理解することは、安全なWebアプリケーション開発の第一歩です。特にモデルパーミッションは、データベースの操作制御に直結します。

生徒

管理画面でチェックを入れるだけで設定できるのは安心ですね。Pythonコードでhas_permを使えば、画面表示も制御できることが分かりました。

先生

そうです。グループ機能と組み合わせれば、ユーザー管理も効率化できます。Django認可を理解すれば、初心者でも本格的なWebアプリケーションを構築できますよ。

生徒

これからはモデルパーミッションを意識して設計してみます。Djangoで安全に開発できる自信がつきました。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New2
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New3
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
New4
Flask
FlaskのURLルールとは?ルーティングの基本と動的URLの作り方を解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.5
Java&Spring記事人気No5
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.6
Java&Spring記事人気No6
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説