Djangoのcreatesuperuserで管理者ユーザーを作成/追加する
- 作成日: 2021-08-03
- 更新日: 2023-12-24
- カテゴリ: Django
createsuperuserで管理者ユーザーを追加する
Djangoの管理サイトでは、ログインのために管理者ユーザーが必要になります。
管理者ユーザーとはDjangoの管理サイトにおいて最上位の権限を持つユーザーです。
この管理者ユーザーを追加するにはDjangoのコマンドcreatesuperuserを使います。
この記事ではDjangoのコマンドcreatesuperuser
の使い方とその周辺の事柄について解説します。
具体的には↓を見ていきます。
- データベースのマイグレート
- createsueruserの使い方
- createsuperuserで管理者ユーザーを作成する
- シェルで追加した管理者ユーザーを確認する
- 作成した管理者ユーザーで管理サイトにログインする
- changepasswordで管理者ユーザーのパスワードを変更する
- createsuperuserでオプションを利用する
データベースのマイグレート
createsuperuser
コマンドを使うには、データベースがマイグレートされている必要があります。
プロジェクト開始直後のデータベースはまっさらな状態なので、管理者ユーザー用のテーブルなども作成されていません。
そのため、データベースが空の状態でcreatesuperuser
コマンドを実行するとエラーになります。
↓のようにmigrate
コマンドを使ってデータベースにテーブルを作成しておきます。
$ python manage.py migrate
すでにプロジェクト開始直後にマイグレートを実行している場合は、この操作は必要ありません。
createsueruserの使い方
createsuperuser
コマンドは-h
あるいは--help
オプションを持っています。
そのため↓のように実行するとcreatesuperuser
の使い方を表示することが出来ます。
$ python manage.py createsuperuser -h
createsuperuserで管理者ユーザーを作成する
createsuperuser
コマンドを実行すると、↓のように対話的なプロンプトが表示され、ユーザー名、Eメールアドレス、パスワードの入力をうながされます。
$ python manage.py createsuperuser
Username (leave blank to use 'xxx'): admin
Email address: xxx@xxx
Password:
Password (again):
Superuser created successfully.
ユーザー名、Eメールアドレス、パスワードを順に入力していくと「Superuser created successfully
」と表示されます。
このコマンドで作成するユーザーは管理サイトにおける全権限を持っています。なんでもできます。
そのため、ショルダーハックなどされないように気をつけてください。
周りに自分しかいないことを確認してからコマンドを実行しましょう。
シェルで追加した管理者ユーザーを確認する
shell
コマンドで追加した管理者ユーザーの存在を確認することが出来ます。
↓のようにpython manage.py shell
を実行するとプロンプトが表示されます。
$ python manage.py shell
>>>
この状態でdjango.contrib.auth.models
からUser
モデルをインポートします。
これが管理者ユーザーおよび認証済みユーザーのモデルです。
↓のようにプロンプトにコードを入力していきます。
>>> from django.contrib.auth.models import User
>>>
>>> users = User.objects.all()
>>> users
<QuerySet [<User: admin>]>
>>>
>>> admin = users[0]
>>> admin.username
'admin'
>>> admin.is_authenticated
True
>>> admin.is_staff
True
>>> admin.is_superuser
True
>>>
admin
変数のis_sueruser
属性がTrue
になっているのがわかります。
この属性がTrue
のUser
は管理者ユーザーの権限を持っています。
作成した管理者ユーザーで管理サイトにログインする
開発用サーバーを起動して、管理サイトにログインしてみましょう。
$ python manage.py runserver 0.0.0.0:7123
ブラウザで「http://localhost:7123/admin/
」にアクセスすると、管理サイトへのログイン画面が現れます。
ここに先ほど追加した管理者ユーザーのユーザー名とパスワードを入力すると、ログインが可能です。
changepasswordで管理者ユーザーのパスワードを変更する
追加した管理者ユーザーのパスワードはchangepassword
コマンドで変更することが出来ます。
↓のようにchangepassword
コマンドを実行します。
$ python manage.py changepassword admin
Changing password for user 'admin'
Password:
Password (again):
Password changed successfully for user 'admin'
パスワードの入力がプロンプトでうながされるので、新しいパスワードを2回入力します。
パスワードの更新に成功すると「Password changed successfully for user 'ユーザ名'
」というメッセージが表示されます。
createsuperuserでオプションを利用する
createsuperuser
はオプションをいくつか持っていますが、--username
オプションと--email
オプションを使うと、ユーザー名とEメールアドレスの入力を省略することが出来ます。
$ python manage.py createsuperuser --username admin2 --email xxx@xxx
Password:
Password (again):
Superuser created successfully.
↑のように--username
オプションにユーザー名、--email
オプションにEメールアドレスを指定している場合は、パスワードのプロンプトだけが表示されます。
おわりに
今回はDjangoのcreatesuperuser
コマンドについて見てみました。
プロジェクトを開始した場合、比較的に実行する確率が高いコマンドの1つと言えます。
🦝 < 管理してほしい
🐭 < 自己管理おつ