ModelForms のフィールド検証を制御する方法がわかりません。
ここに私のモデルフォームがあります:
class UserForm(ModelForm):
class Meta:
model = User
fields = ('email', 'password')
テンプレートでフォームをレンダリングする方法は次のとおりです。
<form method="post" action="">
{% csrf_token %}
{{ userform.as_p }}
<input type="submit" value="Submit" />
</form>
これが私の見解です:
def login_page(request):
if request.method == 'POST':
userform = UserForm(request.POST)
if userform.is_valid():
email = request.POST['email']
password = request.POST['password']
user = authenticate(username=email, password=password)
if user is not None:
login(request, user)
return redirect('/dashboard/')
else:
# How can I give the user feedback about authentication failute here. Right now it just reloads the form without any messages.
return render(request, "login.html", {"userform": userform})
else:
# Because .is_valid() is called, The userform will validate for email addresses and that a password input is present here.
return render(request, "login.html", {"userform": userform})
else:
userform = UserForm()
return render(request, "login.html", {"userform": userform})
ドキュメントを読むと、フォームにカスタム属性を渡すのと同じくらい簡単なはずです。しかし、ModelForm を使用しているため、これが同じ方法で実現されるかどうかはわかりません。
ModelForm フィールドのエラーを制御するための最良の方法について、例やヒントを提供してくれる人はいますか?
ありがとう!