[英]show same form in multiple template
我有一個需要在兩個不同模板中顯示的表單。 一個是主頁,即在邀請頁面上僅顯示邀請表單,另一個在主頁中。 從主頁填寫表格時,如果有錯誤,則應從該表格的主頁(即邀請模板)中顯示錯誤。
我可以在邀請模板中顯示表單,並且錯誤顯示也可以正常工作,但是如果我從首頁填寫表單,即使我傳遞正確的值,也總是會收到“ 此字段為必填”錯誤。
這是我的代碼
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)
我將索引視圖更改為此。 如果我填寫正確的值,則會保存數據,但是如果出現錯誤,則不會重定向到/ invitation / request頁面以顯示該錯誤。 如果我在form.is_invalid()的else條件下使用HttpResponseRedirect,則當我進入首頁時,我會立即重定向到/ invitation / request頁面。
您不是在主視圖中驗證並保存表單,因此基本上它保持空白
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.