With the post Proper way to handle multiple forms on one page in Django I tried to create multiple forms in just one template, so when I press just one submit button, it doesn't submit all the forms right away.
I gave my submit buttons a name, for example form1_btn for my first form.
Before I could even try if it works, I get the following error, even though I specified in the Else statement what happens when request != 'POST
local variable 'form' referenced before assignment
View Files
@login_required
def DashboardView(request):
browser = str(request.user_agent.browser.family)
user = str(request.user)
short_user = user[0:7] + "..."
try:
radius = request.user.fieldradius
except FieldRadius.DoesNotExist:
radius = FieldRadius(user=request.user)
try:
font_size = request.user.fontsize
except FontSize.DoesNotExist:
font_size = FontSize(user=request.user)
try:
change_color = request.user.colors
except Colors.DoesNotExist:
change_color = Colors(user=request.user)
try:
toggle_settings = request.user.togglesettings
except ToggleSettings.DoesNotExist:
toggle_settings = ToggleSettings(user=request.user)
try:
page_details = request.user.pagedetails
except PageDetails.DoesNotExist:
page_details = PageDetails(user=request.user)
if request.method == 'POST':
if 'form1_btn' in request.POST:
form = FieldForm(request.POST, prefix='form1',
instance=Field(user=request.user))
if form.is_valid():
obj = form.save(commit=False)
obj.creator_adress = get_client_ip(request)
obj.save()
return redirect('/dashboard#5')
elif 'form2_btn' in request.POST:
togglesettings_form = ToggleSettingsForm(
request.POST, prefix='form2', instance=toggle_settings)
if togglesettings_form.is_valid():
togglesettings_form.save()
return redirect('/dashboard/#panel1')
elif 'form3_btn' in request.POST:
radius_form = FieldRadiusForm(
request.POST, prefix='form3', instance=radius)
if radius_form.is_valid():
radius_form.save()
return redirect('/dashboard')
elif 'form4_btn' in request.POST:
change_color_form = ColorsForm(
request.POST, prefix='form4', instance=change_color)
if change_color_form.is_valid():
change_color_form.save()
return redirect('/dashboard')
elif 'form5_btn' in request.POST:
pagedetails_form = PageDetailsForm(
request.POST, request.FILES, prefix='form5', instance=page_details)
if pagedetails_form.is_valid():
pagedetails_form.save()
return redirect('/dashboard')
elif 'form6_btn' in request.POST:
fontsize_form = FontSizeForm(
request.POST, prefix='form6', instance=font_size)
if fontsize_form.is_valid():
fontsize_form.save()
return redirect('/dashboard')
else:
form = FieldForm(prefix='form1')
togglesettings_form = ToggleSettingsForm(prefix='form2')
radius_form = FieldRadiusForm(prefix='form3', instance=radius)
change_color_form = ColorsForm(prefix='form4', instance=change_color)
pagedetails_form = PageDetailsForm(
prefix='form5', instance=page_details)
fontsize_form = FontSizeForm(prefix='form6', instance=font_size)
return render(request, 'dashboard.html', {'form': form, 'togglesettings_form': togglesettings_form, 'fontsize_form': fontsize_form, 'change_color_form': change_color_form, 'browser': browser, 'short_user': short_user, 'radius_form': radius_form, 'radius': radius, 'pagedetails_form': pagedetails_form})
``