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_superuser | True | False | False |
| is_staff | True | True | False |
| 管理画面ログイン | 可能 | 可能 | 不可 |
| 全操作権限 | あり | 個別設定 | なし |
ポイント: 管理画面にアクセスするにはis_staff=Trueが必要です。スーパーユーザーは全権限を持ちますが、スタッフユーザーは個別に操作権限を設定できます。本番環境では必要最小限の権限を付与するのがセキュリティ上のベストプラクティスです。
Step 6スクリプトからユーザーを作成する
自動化やデプロイ時に、対話なしでスーパーユーザーを作成する方法です。
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コマンドでパスワードを再設定できる- スーパーユーザー・スタッフ・一般ユーザーで権限レベルが異なる