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

Django認可入門|カスタムパーミッション(Meta.permissions)の定義方法を初心者向けにやさしく解説

Django認可でカスタムパーミッションを定義する方法(Meta.permissions)
Django認可でカスタムパーミッションを定義する方法(Meta.permissions)

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

生徒

「Djangoでログインした人によって、できることを変える仕組みってあるんですか?」

先生

「あります。Djangoには認可という仕組みがあって、誰が何をしていいかを細かく決められます。」

生徒

「管理者だけ編集できる、とかですか?」

先生

「そうです。さらに自分でカスタムパーミッションを作ることもできます。」

生徒

「プログラミング未経験でも理解できますか?」

先生

「大丈夫です。パソコンに触ったことがない人でも分かるように、たとえ話を交えて説明します。」

1. Djangoの「認可」とは何か?

1. Djangoの「認可」とは何か?
1. Djangoの「認可」とは何か?

Djangoの認可とは、「この人はこの操作をしてもいい」「この人はダメ」という権限の管理のことです。例えば、学校で考えると、先生だけが成績を変更できて、生徒は見るだけ、というルールがありますよね。このルール作りが認可です。

Djangoでは、ログインしているユーザーに対してパーミッション(permission)という許可証を持たせることで、操作できる内容を制限します。

2. Djangoの標準パーミッションの仕組み

2. Djangoの標準パーミッションの仕組み
2. Djangoの標準パーミッションの仕組み

Djangoでは、モデル(データの設計図)を作ると、自動で基本的なパーミッションが用意されます。例えば「追加する」「変更する」「削除する」「見る」といった許可です。

これは、アプリに最初から用意されている便利な機能ですが、「承認する」「公開する」など、アプリ独自の動きには対応できません。そこで使うのがカスタムパーミッションです。

3. カスタムパーミッションとは?

3. カスタムパーミッションとは?
3. カスタムパーミッションとは?

カスタムパーミッションとは、自分で自由に作れるオリジナルの許可ルールです。たとえば「記事を公開できる人」「特別なボタンを押せる人」などを決められます。

現実世界でたとえると、「職員室に入っていい人だけが持っているカギ」を自分で作るようなイメージです。

4. Meta.permissionsで定義する基本構文

4. Meta.permissionsで定義する基本構文
4. Meta.permissionsで定義する基本構文

Djangoでカスタムパーミッションを作るには、モデルの中にあるMetaクラスを使います。Metaとは「このモデルに関する追加情報を書く場所」です。


from django.db import models

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

    class Meta:
        permissions = [
            ("can_publish_article", "記事を公開できる"),
        ]

ここでは「can_publish_article」というパーミッションを作っています。前半はプログラム用の名前、後半は人が見る説明文です。

5. permissionsの書き方をやさしく分解

5. permissionsの書き方をやさしく分解
5. permissionsの書き方をやさしく分解

permissionsはリスト形式で書きます。中には「タプル」という2つセットの箱を入れます。1つ目が機械向けの名前、2つ目が人向けの説明です。

たとえば、お店の会員カードに「VIP」と書いてあり、裏に「特別席が使えます」と説明があるようなものです。


class Meta:
    permissions = [
        ("can_view_secret", "秘密のページを見られる"),
        ("can_edit_secret", "秘密の内容を編集できる"),
    ]

このように、複数のカスタムパーミッションも作れます。

6. マイグレーションでパーミッションを登録する

6. マイグレーションでパーミッションを登録する
6. マイグレーションでパーミッションを登録する

モデルを書いただけでは、まだDjangoに反映されていません。ここでマイグレーションという作業が必要です。これは「設計図を元に、実際のデータベースを更新する作業」です。


python manage.py makemigrations
python manage.py migrate

これで、カスタムパーミッションがDjangoに正式登録されます。

7. 管理画面でパーミッションを確認する

7. 管理画面でパーミッションを確認する
7. 管理画面でパーミッションを確認する

Djangoの管理画面では、作成したカスタムパーミッションを確認できます。ユーザーやグループにチェックを入れるだけで、許可を与えられます。

これは、紙の申請書にハンコを押すような感覚です。コードを書かなくても設定できるのが初心者にとって安心なポイントです。

8. ビューでカスタムパーミッションを使う例

8. ビューでカスタムパーミッションを使う例
8. ビューでカスタムパーミッションを使う例

最後に、作ったパーミッションを使って「許可がある人だけ見られる画面」を作る例です。


from django.contrib.auth.decorators import permission_required

@permission_required("app.can_publish_article")
def publish_view(request):
    return HttpResponse("記事を公開できます")

このコードでは、「can_publish_article」の許可を持っていない人は、この画面を開けません。まさに入場制限です。

カテゴリの一覧へ
新着記事
New1
Python
Pythonのクロージャー(Closure)とは?関数内関数とnonlocalの活用
New2
Python
Pythonのスコープとは?ローカル変数・グローバル変数の違いと使い分け
New3
Python
Pythonのreturn文の使い方!値を返す関数の書き方と注意点
New4
Python
PythonでSQLデータベース操作時のエラーハンドリングを初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでトランザクション処理を実装する方法を完全解説!commit・rollbackで安全なSQL操作
No.2
Java&Spring記事人気No2
Flask
Flaskとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.3
Java&Spring記事人気No3
Flask
FlaskでAPIのレスポンスをキャッシュ!通信負荷を軽減して爆速にする方法
No.4
Java&Spring記事人気No4
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.5
Java&Spring記事人気No5
Flask
Flaskでデータベースエラーを処理する方法!初心者にもわかる例外の使い方
No.6
Java&Spring記事人気No6
Flask
FlaskのSQLAlchemyでフィルタリング検索!filter, filter_byの使い方完全ガイド
No.7
Java&Spring記事人気No7
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.8
Java&Spring記事人気No8
Django
Django settings.py の役割とよく使う設定を完全解説!初心者でもわかる基本と考え方