(最終更新月:2022年8月)
✔このような方へ向けて書かれた記事となります
「Djangoでcreatesuperuserコマンドを使いたい」
「Djangoで管理者ユーザーを作成したい」
「createsuperuserコマンドでもっと便利なことないのかな?」
✔当記事を通じてお伝えすること
- Djangoのコマンド「createsuperuser」を使う方法
- createsuperuserのオプションについて
- createsuperuserで作成したユーザー情報を変更・確認したいときにやること
当記事を最後までご覧いただければ、createsuperuserコマンドの使い方はもちろん、オプションの使い方やユーザー情報の変更方法まで詳しくなります。
ぜひ最後までご覧ください。
管理者ユーザーを作る手順
管理者ユーザーを作るには手順があります。
- データベースをマイグレート
- 管理者ユーザー作成のコマンドを入力
- ログインして確認する
それぞれ見ていきましょう。
(手順1)データベースのマイグレート
プロジェクトを立ち上げて間もない方は、必ずデータベースのマイグレートが必要です。
マイグレートをすることで、データベースにユーザー情報用のテーブルが用意されます。
以下のコマンドで、マイグレートをおこないましょう。
python manage.py migrate
既にマイグレートが完了していれば、問題ありません。
(手順2)createsuperuserで管理者ユーザーを作成
データベースにテーブルができましたら、管理者ユーザー作成のコマンドを入力します。
python manage.py createsuperuser
上から順番に入力していきます。
ユーザー名 (leave blank to use 'xxx'): >>> ユーザー名を入力
メールアドレス: >>> メールアドレスを入力
Password: >>> パスワードは打ち込んでも表示されません
Password (again): >>> 上と同様のパスワード(打ち込んでも表示されません)
以下の通りメッセージが表示されれば完了。
Superuser created successfully.
(手順3)管理者画面でログインする
管理者が作成できましたら、サーバーを立ち上げて、ログインしてみましょう。
サーバーを立ち上げる
python manage.py runserver
ログイン画面へアクセスする
urls.pyに記載されているURLを入力します。
管理者情報を入力
無事アクセスできれば以下のようなページへ移行します。
【応用編】createsuperuserの使い方
createsuperuserについて、もう少し詳しく知りたい方へ向けて、以下の2点をお伝えします。
- オプション一覧
- ワンライナーで管理者ユーザーを作る方法
オプション一覧
以下のコマンドで、オプション一覧が確認できます。
python manage.py createsuper -h
オプションにより、コマンドのあとに「-h」など、ハイフンとローマ字を組み合わせたものを記述することで、動作条件などが確認できるようになります。
オプション一覧「-h」の出力結果は以下のとおり。
usage: manage.py createsuperuser [-h] [--username USERNAME] [--noinput] [--database DATABASE] [--email EMAIL] [--version] [-v {0,1,2,3}] [--settings SETTINGS]
[--pythonpath PYTHONPATH] [--traceback] [--no-color] [--force-color] [--skip-checks]
Used to create a superuser.
optional arguments:
-h, --help show this help message and exit
--username USERNAME Specifies the login for the superuser.
--noinput, --no-input
Tells Django to NOT prompt the user for input of any kind. You must use --username with --noinput, along with an option for any other required field.
Superusers created with --noinput will not be able to log in until they're given a valid password.
--database DATABASE Specifies the database to use. Default is "default".
--email EMAIL Specifies the email for the superuser.
--version Show program's version number and exit.
-v {0,1,2,3}, --verbosity {0,1,2,3}
Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output
--settings SETTINGS The Python path to a settings module, e.g. "myproject.settings.main". If this isn't provided, the DJANGO_SETTINGS_MODULE environment variable will be used.
--pythonpath PYTHONPATH
A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".
--traceback Raise on CommandError exceptions.
--no-color Don't colorize the command output.
--force-color Force colorization of the command output.
--skip-checks Skip system checks.
ハイフン(-)やハイフン2つ(–)から始まるものがオプションになります。
具体例として次章にて、コマンド一列で管理者ユーザーを作る方法をお伝えします。
ワンライナーで管理者ユーザーを作る方法
以下のコマンドはオプションを活用して、ワンライナーで管理者を作る方法です。
python manage.py createsuperuser --username testuser --email test@itc.tokyo
Password:
Password (again):
Superuser created successfully.
「–username」「–email」のオプションを使っています。
ユーザー情報を確認・変更したいときは?
こちらではユーザー情報を確認・変更する方法を伝えます。
- シェルで追加したユーザーを確認する方法
- パスワードを変更する方法
シェルで追加したユーザーを確認する方法
シェルを使ってユーザー情報の確認ができます。
以下のとおり進めましょう。
シェルを立ち上げます
python manage.py shell
ユーザーモデルをインポートします
from django.contrib.auth import get_user_model
User = get_user_model()
取り出す方法はいくつかありますが、ユーザーモデルをカスタマイズしても使える方法で覚えておきましょう。
登録ユーザー一覧を確認する
users = User.objects.all()
users
<QuerySet [<User: 管理ユーザー名>]>
管理者ユーザー名が出力されれば、管理者の登録は完了しています。
ほかにも管理画面から確認する方法もありますので、以下の記事で確認してください。
パスワードの変更方法
こちらではパスワードの変更方法をご紹介します。
シェルで変更する
シェルを立ち上げたら、先程の手順で一覧を取得します。
from django.contrib.auth import get_user_model
User = get_user_model()
users = User.objects.all()
users
<QuerySet [<User: 管理ユーザー名>]>
管理ユーザーオブジェクトを変数に格納します。
user_obj = User(username="管理ユーザー名")
set_passwordメソッドで新しいパスワードを設定しましょう。
user_obj.set_password("新しいパスワードを入力")
user_obj.save()
最後のsaveメソッドは忘れずに!
管理画面から変更する場合はこちらをご覧ください。
まとめ:createsuperuserを使いこなすのは簡単
当記事の内容をまとめます。
- 最初のマイグレートを忘れずにおこなうこと
- createsuperuserで管理ユーザーが作成できる
- 困ったらオプション「-h」で一覧を出力しよう
Djangoの強みである管理ユーザー機能を使いこなすには、createsuperuserコマンドは欠かせません。
一度覚えればとても簡単なので、ぜひ当記事の内容はここでマスターしてしまいましょう。
ただもし忘れたときは、いつでも戻ってきてくださいね!