我有一個表單需要在兩個不同的模板中顯示。一個是主頁,即在邀請頁面上顯示只有邀請表格和另一個在主頁上。當從主頁填寫表格時,如果有錯誤,應從該表格的主頁面(即邀請模板)顯示錯誤。在多個模板中顯示相同的表格
我可以在邀請模板中顯示錶單並且錯誤顯示工作正常,但是如果我從主頁填寫表單,即使我傳遞正確的值,我總是會得到'該字段是必需的'錯誤。
這裏是我的代碼
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
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)
我改變了我的索引視圖來此。如果我填寫正確的值,數據將被保存,但如果有錯誤,它不會重定向到/邀請/請求頁面以顯示該錯誤。如果我在form.is_invalid()的else條件中使用HttpResponseRedirect,那麼當我進入主頁時,我會立即重定向到/ invitation/request頁面。
您將被重定向,因爲:1 ** form.is_valid()**是假,因爲它呈現爲先時間,2。**如果創建**是假的,所以最終在else語句中重定向到/ invitiations/request /。 – dentemm
請問我需要做什麼? – milan