Django で createsuperuser コマンドを自動化する

Vaibhav Vaibhav 2023年1月30日
  1. Django シェルを使用してスーパーユーザーを作成する
  2. Python スクリプトを使用してスーパーユーザーを作成する
Django で createsuperuser コマンドを自動化する

Django では、管理者権限を持つユーザーはスーパーユーザーと呼ばれます。スーパーユーザーはすべてを行うことができます。新しいユーザーの作成、既存のユーザーの削除、他のユーザーの情報の操作などを行うことができます。

Django では、スーパーユーザーを作成するために、通常、コマンドラインコマンド python manage.py createsuperuser を使用し、その後にユーザー名、電子メール、パスワードのいくつかの入力を続けます。

しかし、このプロセス全体を自動化するか、1 行のコードを使用して完了することができれば、それは驚くべきことではないでしょうか。

この記事では、スーパーユーザーの作成を自動化する方法を学びます。

Django シェルを使用してスーパーユーザーを作成する

Django Shell は、Django のデータベース API を使用してデータベースと対話するためのコマンドライン Python ツールです。Django Shell を使用すると、データベースにデータを作成したり、既存のデータを変更したり、既存のデータを削除したりすることができます。また、新規ユーザーやスーパーユーザーを作成することもできます。

Django Shell を使用してスーパーユーザーを作成するには、次のスクリプトを使用します。

echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('userUsername', 'userEmail', 'userPassword')" | python manage.py shell

このスクリプトは、最初にメソッド get_user_model をインポートして、Django で使用されるユーザーモデルを取得します。

このメソッドは、実際のユーザーモデルオブジェクトへの参照を取得し、それを変数 User に格納します。

次に、この参照を使用して、create_superuser() を使用して新しいスーパーユーザーを作成します。このメソッドは、ユーザー名、電子メール、およびパスワードを受け入れます。

これらのフィールドは、Django のデフォルトのユーザーモデルに有効であることに注意してください。カスタムユーザーモデルを使用する場合、ユーザーまたはスーパーユーザーを作成するためのフィールドはそれに応じて変更されます。

Python スクリプトを使用してスーパーユーザーを作成する

Django モデルは Django プロジェクトのどこからでもアクセスできるため、それらを使用してユーザーとスーパーユーザーを作成できます。一部の入力を受け入れる関数を作成し、それらをこのタスクに使用してスーパーユーザーを作成できます。

from django.contrib.auth.models import User


def createSuperUser(username, password, email="", firstName="", lastName=""):
    invalidInputs = ["", None]

    if username.strip() in invalidInputs or password.strip() in invalidInputs:
        return None

    user = User(
        username=username,
        email=email,
        first_name=firstName,
        last_name=lastName,
    )
    user.set_password(password)
    user.is_superuser = True
    user.is_staff = True
    user.save()

    return user

この関数には、2つの必須の引数、つまりユーザー名とパスワード、および 3つのオプションの引数があります。渡された値に基づいてスーパーユーザーを作成し、新しく形成されたスーパーユーザーへの参照を返します。

著者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.