カテゴリ: 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
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
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.6
Java&Spring記事人気No6
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.7
Java&Spring記事人気No7
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説