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

Django

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

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

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

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

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

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

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

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

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

【著者プロフィール】

profile_icon
【Python歴】11年 x 【Django歴】10年
HP作成、社内システムの構築、コンサルティング

当ブログを通じて、Webアプリの書き方やアプリの公開方法までを解説しています。

☆日報アプリ「D-Repo」(デモ版)→こちら

※Djangoをベースに作成したアプリです。

☆便利ツールアプリ「Tool Station」→こちら

※Django REST frameworkとReactで作成しているアプリです。

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

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

  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コマンドは欠かせません

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

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

✔当ブログは以下のような方に向けて書かれています

「Djangoでのアプリ開発を学びたい!」

「Djangoで開発したアプリをWebで公開するにはどうするの?」

✔当ブログ掲載の記事

  • Djangoで作る日報アプリ開発
  • WebアプリをWeb上に公開する方法
  • Webアプリ開発に必要なそのほかの情報
【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

ITCブログにご協力いただける方は、以下もご検討いただけると嬉しいです。

ITCへ投げ銭をする

タイトルとURLをコピーしました