基本

Djangoスーパーユーザー入門|管理者アカウントの作成

Django 管理者 createsuperuser

Djangoスーパーユーザー入門
管理者アカウントの作成

Djangoの管理画面にアクセスするためのスーパーユーザー(管理者アカウント)の作成方法を解説します。

こんな人向けの記事です

  • Djangoの管理画面を使いたい人
  • スーパーユーザーの作成手順を知りたい人
  • ユーザー管理の基本を理解したい人

Step 1マイグレーションの実行

スーパーユーザーを作成する前に、データベースのマイグレーションを実行しておく必要があります。これにより、Djangoのユーザー管理テーブルが作成されます。

ターミナル
python manage.py migrate
実行結果
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying sessions.0001_initial... OK

ポイント: マイグレーションを実行していない状態でスーパーユーザーを作成しようとすると、「テーブルが存在しない」というエラーが発生します。必ず先にmigrateを実行してください。

Step 2スーパーユーザーの作成

以下のコマンドを実行して管理者ユーザーを作成します。

ターミナル
python manage.py createsuperuser

コマンド実行後、以下の情報の入力を求められます。

実行結果
ユーザー名: admin
メールアドレス: admin@example.com
Password: 
Password (again): 
Superuser created successfully.
項目必須説明
ユーザー名必須ログインに使用する名前
メールアドレス任意空欄でEnterを押してスキップ可能
パスワード必須8文字以上推奨
パスワード確認必須同じパスワードを再入力

注意: パスワード入力時は画面に文字が表示されませんが、正常に入力されています。セキュリティのための仕様です。

Step 3管理画面へのアクセス

開発サーバーを起動し、http://127.0.0.1:8000/admin/にアクセスします。

ターミナル
python manage.py runserver

ブラウザでアクセスすると、ログインフォームが表示されます。作成したユーザー名とパスワードでログインすると、Django管理画面のダッシュボードが表示されます。

管理画面では、以下の操作ができます。

  • ユーザーとグループの管理
  • 登録されたモデルのデータの閲覧・追加・編集・削除
  • 操作ログの確認

Step 4パスワードの変更

パスワードを忘れた場合や変更したい場合は、以下のコマンドで再設定できます。

ターミナル
python manage.py changepassword admin
実行結果
Changing password for user 'admin'
Password: 
Password (again): 
Password changed successfully for user 'admin'

adminの部分を変更したいユーザー名に置き換えてください。

Step 5スーパーユーザーと一般ユーザーの違い

Djangoのユーザーには権限レベルがあります。

属性スーパーユーザースタッフユーザー一般ユーザー
is_superuserTrueFalseFalse
is_staffTrueTrueFalse
管理画面ログイン可能可能不可
全操作権限あり個別設定なし

ポイント: 管理画面にアクセスするにはis_staff=Trueが必要です。スーパーユーザーは全権限を持ちますが、スタッフユーザーは個別に操作権限を設定できます。本番環境では必要最小限の権限を付与するのがセキュリティ上のベストプラクティスです。

Step 6スクリプトからユーザーを作成する

自動化やデプロイ時に、対話なしでスーパーユーザーを作成する方法です。

Python
from django.contrib.auth.models import User

# スーパーユーザーを作成
User.objects.create_superuser(
    username="admin",
    email="admin@example.com",
    password="your_password"
)

# 一般ユーザーを作成
User.objects.create_user(
    username="testuser",
    email="test@example.com",
    password="test_password"
)

注意: スクリプトにパスワードを直接記述するのはセキュリティリスクがあります。本番環境では環境変数から読み込むようにしてください。

まとめ

  • スーパーユーザー作成前にpython manage.py migrateを実行する
  • python manage.py createsuperuserで管理者ユーザーを作成する
  • 管理画面はhttp://127.0.0.1:8000/admin/からアクセスする
  • changepasswordコマンドでパスワードを再設定できる
  • スーパーユーザー・スタッフ・一般ユーザーで権限レベルが異なる