Solución:
Submit
es una estructura de formulario HTML … Debe usar el atributo de nombre de los objetos de formulario de la siguiente manera … En su plantilla:
<form>
...
<input type="submit" name="list" value="List Objects" />
</form>
<form>
...
<input type="submit" name="do-something-else" value="Do Something Else" />
</form>
En tu opinión:
if 'list' in request.POST:
# do some listing...
elif 'do-something-else' in request.POST:
# do something else
Una cosa a tener en cuenta para evitar confusiones. los name
del botón enviar no se mostrará si solo hay un botón en el formulario.
#template.html
<form action="..." method="post">
<input type="submit" name = "first_button" value="Add">
</form>
#view.py
...
'first_button' in request.POST #False
#template.html
<form action="..." method="post">
<input type="submit" name = "first_button" value="Add">
<input type="submit" name = "second_button" value="Remove">
</form>
#view.py
...
'first_button' in request.POST #True if you clicked on that button
Llego un poco tarde pero aquí está la solución
Problema al que te enfrentas
Está intentando obtener el nombre del botón, pero el valor inicial del botón no es correcto.
código HTML
<input type="submit" value="Add">
Código Python / View.py
if request.POST['submit']=='Add': #code to deal with the "Add" form
Solución
Primero busque el nombre del botón en el diccionario request.POST si existe y luego obtenga su valor.
código HTML
Agrega el nombre de tu botón y su valor.
<input type="submit" value="Add" name="add_object">
Views.py
Puede encontrar el nombre del botón en request.POST diccionario
if request.POST['submit'] == 'add_object': # Both ways to deal with it if 'add_object' in request.POST:
Cosas extra
Tenemos dos formularios en una página.
El primer formulario tiene 2 botones con el mismo nombre asignaturas pero valores diferentes fav_HTML y fav_CSS.
La segunda forma también tiene 2 botones con el mismo nombre tutoriales pero valores diferentes
Tutorials_HTML y Tutoriales_CSS.
<form action="" method="post">
Form 1
<button name="subject" type="submit" value="interview_HTML">HTML</button>
<button name="subject" type="submit" value="interview_CSS">CSS</button>
</form>
<form action="" method="post">
Form 2
<button name="tutorials" type="submit" value="Tutorials_HTML">HTML</button>
<button name="tutorials" type="submit" value="Tutorials_CSS">CSS</button>
</form>
views.py
Podemos manejar diferentes formularios, verificar en qué botón se hace clic, obtener sus valores y hacer algo.
if 'subject' in request.POST: # this section handle subject form (1st Form)
#now we can check which button is clicked
# Form 1 is submitted , button value is subject now getting their value
if 'interview_HTML' == request.POST.get('subject'):
pass
# do something with interview_HTML button is clicked
elif 'interview_CSS' == request.POST.get('subject'):
pass
# do something with interview_CSS button is clicked
elif 'tutorials' in request.POST: #this section handle tutorials form (2nd form)
#now we can check which button is clicked
# Form 1 is submitted , button name is tutorials now getting their value
if 'Tutorials_HTML' == request.POST.get('tutorials'):
pass
# do something with fav_HTML button is clicked
elif 'Tutorials_CSS' == request.POST.get('tutorials'):
pass
# do something with fav_CSS button is clicked