私は2つの異なるテンプレートで表示する必要があるフォームを持っています。 1つはメインページで、招待状と招待状はホームページに表示されます。フォームがホームページから入力されたときにエラーが発生した場合は、そのフォームのメインページ、つまり招待テンプレートからエラーが表示されます。複数のテンプレートで同じフォームを表示
私は招待状のフォームを表示することができましたが、エラー表示も完璧に機能していますが、私はホームページからフォームを記入するといつもこのフィールドは必要です私は正しい値を渡します。
は、ここで私はこれまで私のインデックスビューを変更
def index(request):
form = InviteForm(request.POST or None)
if form.is_valid():
join = form.save(commit=False)
print ('noin', join)
email = form.cleaned_data.get('email')
already_join, created = Invitation.objects.get_or_create(email=email)
print ('already_join', already_join, created)
if created:
already_join.invite_code = get_invite_code()
already_join.save()
send_request_received_email.delay(email,already_join.email_tracker)
messages.success(request, "Thank you for your interest")
return HttpResponseRedirect('/')
else:
return HttpResponseRedirect('/invitations/request')
# return HttpResponseRedirect('/invitations/request')
context = {"form": form}
return render(request, 'index.html', context)
私のコード
def requestInvitation(request):
form = InviteForm(request.POST or None)
if form.is_valid():
join = form.save(commit=False)
email = form.cleaned_data.get('email')
already_join, created = Invitation.objects.get_or_create(email=email)
if created:
already_join.invite_code = get_invite_code()
already_join.save()
send_request_received_email.delay(email,already_join.email_tracker)
messages.success(request, "Thank you for your interest.")
return HttpResponseRedirect('/')
context = {"form": form}
return render(request, 'invitation/invitation.html', context)
def index(request):
form = InviteForm(request.POST or None)
context = {"form": form}
if not request.user.is_authenticated():
return render(request, "home.html", context)
else:
return render(request, "home.html", context)
url(r'^request/$', requestInvitation, name='request-invitation'),
UPDATEです。正しい値を入力すればデータは保存されますが、エラーがある場合は/ invitation/requestページにリダイレクトされずにそのエラーが表示されます。 form.is_invalid()のelse条件でHttpResponseRedirectを使用すると、ホームページに入ると、即座に/ invitation/requestページにリダイレクトされます。
空のままで、あなたのホームビューでフォームを検証して保存されていません。それが最初のためにレンダリングされるので、**)(1. ** form.is_validはFalseです**作成された場合**はFalseなので、/ invitiations/request /にリダイレクトされるelseステートメントで終了します。 – dentemm
どうしたらいいですか? – milan