Saltar al contenido

¿Cómo puedo acceder al valor del botón de envío del formulario en Django?

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
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *