最初のステップは、コマンドラインから新しいDjangoプロジェクトを作成することです。 私たちはいくつかのことをする必要があります:
コードのための新しいディレクトリを作成してナビゲートする 新しい仮想環境のニュースを作成する Djangoをインストールする 新しいDjangoプロジェクトを作成するnewspaper_project 新しいアプリを作る
ここでユーザーを管理するためにアプリを呼び出すのですが、オープンソースコードでアカウントと呼ばれることもよくあります。 実際の名前は、プロジェクト全体を通して参照する際に一貫している限り重要です。
カスタムユーザーモデルを作成するには、次の4つの手順が必要です。
settings.pyでは、INSTALLED_APPSにユーザーアプリを追加します。
次に、ファイルの最後に、AUTH_USER_MODEL設定を使用してDjangoに、組み込みユーザモデルの代わりに新しいカスタムユーザモデルを使用するよう指示します。
カスタムユーザーモデルCustomUserは、ユーザーのアプリケーション内に存在するため、これをUsers.CustomUserと呼びます。
---code ---
今度は、既存のAbstractUserを拡張するCustomUserと呼ばれる新しいUserモデルでusers / models.pyを更新します。 最初のカスタムフィールドageもここに含めます。
AbstractBaseUserは非常に細かい制御とカスタマイズが必要です。 基本的にDjangoを書き換えます。 これは参考になりますが、フィールドを追加して更新できるカスタムユーザーモデルが必要な場合は、AbstractBaseUserをサブクラス化するAbstractUserを使用することをお勧めします。 言い換えれば、コードを書くことが少なく、物事を混乱させる機会が少なくなります。 あなたがDjangoで何をやっているのか本当に分かっていなければ、より良い選択です!
年齢フィールドにはnullと空白の両方を使用することに注意してください。 これらの2つの用語は混同しやすいものの、全く異なるものです。
実際には、nullと空白は、フォームが空の値を許可し、データベースがその値をNULLとして格納するように、この方法で共用されます。 注意すべき共通の問題は、フィールドタイプがこれらの値の使用方法を決定することです。
CharFieldやTextFieldのような文字列ベースのフィールドがある場合は、nullと空白の両方を設定すると、データベースに「データなし」という2つの値が設定されます。 それは悪い考えです。 Djangoのコンベンションではなく、NULLではなく空の文字列 ''を使用します。
私たちが新しいCustomUserモデルとやりとりする2つの方法は何ですか?
1つのケースは、ユーザーが当社のウェブサイト上の新しいアカウントにサインアップする場合です。
もう1つは管理アプリケーションの中にあり、スーパーユーザーとして既存のユーザーを変更することができます。
したがって、この機能のために2つの組み込みフォームUserCreationFormとUserChangeFormを更新する必要があります。
Controlを使用してローカルサーバーを停止し、forms.pyと呼ばれるユーザーファイルに新しいファイルを作成します。
--- cmd ---
既存のUserCreationFormフォームとUserChangeFormフォームを拡張するために、次のコードでそれを更新します。
--- code --
両方の新しいフォームでは、モデルをCustomUserに設定し、デフォルトフィールドをすべてMeta.fields経由で使用します。
私たちのカスタム年齢フィールドを追加するには、最後にそれをタックしてください、そして、それは私たちの将来のサインアップページに自動的に表示されます。
かなり滑らかですね。
フォーム上のフィールドのコンセプトは、最初は混乱する可能性がありますので、さらに詳しく調べてみましょう。
CustomUserモデルには、デフォルトのUserモデルのすべてのフィールドと、追加設定した年齢フィールドが含まれています。
しかし、これらのデフォルトフィールドは何ですか?
それは、username、first_name、last_name、email、password、groupsなどを含む多くがあることが判明しました。
しかし、ユーザがDjangoの新しいアカウントにサインアップすると、デフォルトのフォームはユーザ名、電子メール、およびパスワードのみを要求します。
これは、利用可能なフィールドがさらに多いにもかかわらず、UserCreationFormのフィールドのデフォルト設定がusername、email、およびpasswordであることを示しています。
これは、フォームとモデルの理解に時間がかかるため、クリックしないことがあります。
次の章では、独自のサインアップ、ログイン、およびログアウトページを作成し、CustomUserモデルとフォームをより明確に結び付けます。
だからぴったり! 管理者はデフォルトのUserモデルと緊密に結合されているので、admin.pyファイルを更新するだけです。
既存のUserAdminクラスを拡張して、新しいCustomUserモデルを使用します。
--- code --
さて、我々は完了です! Controlキーを押してローカルサーバーを停止し、makemigrationsを実行して移行し、初めてカスタムユーザーモデルを使用する新しいデータベースを作成します。
スーパーユーザーアカウントを作成して、すべてが期待通りに機能していることを確認しましょう。
コマンドラインで次のコマンドを入力し、プロンプトを表示します。
--- cmd ---
これがうまくいくということは、カスタムユーザーモデルが期待どおりに機能するかどうかの最初の証明です。 管理者のことを余すところなく見てみましょう。 Webサーバーを起動します。
--- cmd --
「ユーザー」のリンクをクリックすると、スーパーユーザーアカウントと、ユーザー名、電子メールアドレス、名、姓、スタッフステータスの既定のフィールドが表示されます。
管理者1人のユーザーここにリストされているフィールドは、CustomUserAdminのlist_display設定で制御できます。
電子メール、ユーザー名、年齢、職員のステータスが表示されるようにしましょう。 これは1行の変更です。
--- code ---
ページを更新すると、更新が表示されます。