【Django】1行のコマンドでSuperUserを作成できるようにしてみる

Django

 

DjangoのSuperUserを下記コマンドで作成しますよね

username,email,passwordをターミナルと対話して入力していきます

Dockerを使用していて、イメージと一緒にsuperuserを作りたいのですが、
対話式というのがめんどう。。

Dockerfileでsuperuserが作れないので、イメージ作成した後に自分で作成しなきゃなんですよね

 

そこで、superuserを作成するコマンドをカスタマイズして、
(対話なしの)1行のコマンドで作成されるようにしていきます

 

 

ゴール

 

username,email,password をコマンドのオプションで受け取れるようにし、
コマンドのみでsuperuserを作成できるようにします

 

 

カスタマイズしてみる

 

  1.  management/commands/ とフォルダを作成していく
  2. 1. のフォルダ直下に custom_createsuperuser.py を作成する

で実装していきます

 

(実装後、ディレクトリ例)

 

 

management/commands/ とフォルダを作成

 

アプリのフォルダ配下にmanagementフォルダを作成し、
その下にcommands フォルダを作成していきます

また、作成したフォルダには必ず__init__.py を作成しましょう
※ないと、コマンドとして認識されないみたい??

 

manage.py の機能を拡張するには、、、

management/commands/ フォルダを作成し、
そこにpythonファイルを追加することでできます

 

1. のフォルダ直下に custom_createsuperuser.py を作成

 

先ほど作成したフォルダ配下にcustom_createsuperuser.pyを作成し、
下記のコードをコピペします (こちらのサイトから引用しました)

 

 

 

動作確認

 

では、コマンドを実行していきましょう

 

↓でID/PWが admin/adminのユーザが作成されました

 

 

エラーが出たら。。。

このようなエラーが出たら、以下2点が原因かもしれません

1. フォルダやファイルの作成場所が適切でない

2. settings.py の INSTALLED_APPS にアプリを追加していない

 

python manage.py runserver

でサーバーを起動し、管理画面からアクセスしてみましょう

 

Username : admin

Password : admin

でログイン出来たらOKです。

 

参考記事

 

Django
The web framework for perfectionists with deadlines.
素人基盤エンジニアがDockerでDjangoを触るシリーズ③:Django admin - Qiita
TL;DR素人基盤エンジニアがDockerでDjangoを触るシリーズ②:モデルの作成の続き。1から読みたい場合は↓こちら。素人基盤エンジニアがDockerでDjangoを触るシリーズ①:Do…

Django: エラー解決法 Unknown command: ‘~’ Type ‘manage.py help’ for usage.
Python 3.8.2、Django==3.0.5の環境で、カスタムコマンドを作成の上、python manage.py コマンド名 を実行したところ、下記のエラーが発生しコマンド処理が実行されない事象が発生。

 

コメント

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