概要
以下の「Django4 Web アプリ開発実装ハンドブック」の第7章の369~386ページにかけてサインアップページを作成しているときに、そのページにメールアドレス入力欄がなかった。本のページに見誤りやすい部分があり、正誤表の通りにコードを修正したところ、メールアドレス入力欄が出るようになった。
説明
本書の371ページに以下の様なコードが記載してある。
from django.contrib.auth.forms import UserCreationForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ("username", "email", "password1", "password2")
ところが、印刷の間違いで本来黒色で印刷するべきところ(class Meta:
の行)が、コメントアウトを示す灰色で印刷してあった。そのため、本来上のようにあるべきところが、以下の様なクラスに見間違えてしまった。
from django.contrib.auth.forms import UserCreationForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
model = CustomUser
fields = ("username", "email", "password1", "password2")
本来、UserCreationFormはデフォルトでmodel属性としてUserを読み込む。そのため、入力フォームとしてユーザー名、メールアドレス、パスワード*2を要求するところ、ユーザー名とパスワードだけを入力するページになってしまった。
解決方法
本書のサポートページの正誤表には、class Meta:
の行が黒色でなく灰色で印刷してあるための旨が記載してある。それを正しく修正すればサインアップページにメールアドレス入力欄が出るようになる。