Django

【Django】createsuperuserでできること全てを徹底解説

(最終更新月:2022年8月)

✔このような方へ向けて書かれた記事となります

「Djangoでcreatesuperuserコマンドを使いたい」

「Djangoで管理者ユーザーを作成したい」

「createsuperuserコマンドでもっと便利なことないのかな?」

✔当記事を通じてお伝えすること

  • Djangoのコマンド「createsuperuser」を使う方法
  • createsuperuserのオプションについて
  • createsuperuserで作成したユーザー情報を変更・確認したいときにやること

当記事を最後までご覧いただければ、createsuperuserコマンドの使い方はもちろん、オプションの使い方やユーザー情報の変更方法まで詳しくなります。

ぜひ最後までご覧ください。

管理者ユーザーを作る手順

管理者ユーザーを作るには手順があります。

  1. データベースをマイグレート
  2. 管理者ユーザー作成のコマンドを入力
  3. ログインして確認する

それぞれ見ていきましょう。

(手順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を入力します。

http://localhost:8000/admin/

管理者情報を入力

無事アクセスできれば以下のようなページへ移行します。

DjangoアプリのAdminページ「テーブル一覧」

【応用編】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コマンドは欠かせません

一度覚えればとても簡単なので、ぜひ当記事の内容はここでマスターしてしまいましょう。

ただもし忘れたときは、いつでも戻ってきてくださいね!