/ PythonDjangoまとめ・シリーズ

Djangoで、会員登録機能を自作する

概要

Djangoで、会員登録機能を自作していきます。

メールアドレスをユーザー名として使うようにし、ログイン画面、仮登録、メールクリックで本登録、ユーザー情報変更ページ、パスワード変更ページ、パスワードを忘れた際の再設定...などなど、よくある一連の機能を実装します。

Userモデルのカスタマイズ

Djangoに用意されているUserモデルは、メールアドレスは単なるおまけのフィールドです。今回はメールアドレスをユーザー名として使えるようにしたいので、デフォルトのUserモデルをカスタマイズする必要があります。

Djangoで、Userモデルのカスタマイズ(継承)

ログイン画面

Djangoにもログイン画面は付属していますが、自分のウェブサイトのイメージと違う場合は自作することになります。

Djangoでログイン画面を自作する

ユーザー登録

ユーザー登録機能と、仮登録後にメールが届き、それにアクセスさせると本登録する、といった機能を実装します。

Djangoでユーザー作成処理(仮登録後、URLクリックで本登録)

マイページ

ユーザー情報の閲覧、更新ページです。閲覧と更新ページには、自分とスーパーユーザー以外はアクセスできないようにもします。

Djangoで、ユーザー情報閲覧・更新ページの作成

パスワード変更、パスワード忘れ

パスワードの変更ページと、パスワードを忘れた際の再設定ページを作ります。

Djangoで、パスワード変更ページと忘れた際の再設定ページ

メールアドレスの変更

メールアドレスを変更したい場合にも、会員登録時と同じように、確認メールを送ってリンクを踏むと変更されるようにします。

Djangoで、メールアドレス変更ページの作成

Tips

会員登録に関して、幾つかのTipsです。

入力内容の確認画面を作るには

素直に実装していくと、入力画面→確認画面 へどうやって入力データを渡し、確認画面からはどうやって前画面で入力されたデータを送信するのかについてを考えることになります。

色々なアプローチがありますが、Djangoの機能だけで確認画面のページを作りたい場合の例を紹介します。

Djangoで、フォームの内容を保持する(Context編)
Djangoで、フォームの内容を保持する(セッション編)

OneToOneの方が良さそうなケース

Userモデルのカスタマイズは強力ですが、OneToOneで別モデルと紐づけるほうが便利なこともあります。

完成品

Githubにソースコードを置いています。

インストールして...

git clone https://github.com/naritotakizawa/django-register-sample
pip install django

すぐに試せます。

python manage.py migrate
python manage.py runserver
python manage.py createsuperuser