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つのオプションの引数があります。渡された値に基づいてスーパーユーザーを作成し、新しく形成されたスーパーユーザーへの参照を返します。