Foros del Web » Programando para Internet » Python »

Obtener Parámetros desde Popup (Python + Django )

Estas en el tema de Obtener Parámetros desde Popup (Python + Django ) en el foro de Python en Foros del Web. Hola buenos días, estoy en un proyecto donde se esta desarrollando en Python usando Django, y normalmente programo en PHP. Mi duda esta al momento ...
  #1 (permalink)  
Antiguo 03/05/2011, 09:20
Avatar de antonyshawn  
Fecha de Ingreso: mayo-2008
Mensajes: 18
Antigüedad: 11 años, 4 meses
Puntos: 0
Obtener Parámetros desde Popup (Python + Django )

Hola buenos días, estoy en un proyecto donde se esta desarrollando en Python usando Django, y normalmente programo en PHP.

Mi duda esta al momento de capturar la data que escribo en un textarea que tengo en un Popup, no hemos tenido problemas capturando de página en página pero el problema se presenta en el Popup. El error que me da es el siguiente:

MultiValueDictKeyError at /recaudos/guardarMotivo
Key 'campo_rechazo' not found in <QueryDict: {}>

Mi código es el siguiente:

urls.py
Código Python:
Ver original
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from django.conf.urls.defaults import *
  4.  
  5. urlpatterns = patterns('',
  6.    (r'^popupRechazar/?$', 'recaudos.views.popupRechazar'),
  7.    (r'^guardarMotivo/?$', 'recaudos.views.guardarRechazo'),
  8. )


forms.py
Código Python:
Ver original
  1. class PopupRechazar(forms.Form):
  2.     title_motivo_rechazo = 'Describa el motivo del rechazo'
  3.     campo_rechazo = forms.CharField(widget=forms.Textarea(attrs={'cols':58,'rows':9}))

views.py
Código Python:
Ver original
  1. #@login_required
  2. def guardarRechazo(request):
  3.     fecha = datetime.now()
  4.     print 'Estoy aqui en guardar rechazo'
  5.     if request.method == 'GET':
  6.         formulario = PopupRechazar(data = request.GET)
  7.         if formulario.is_valid():
  8.             motivo = str(request.GET['campo_rechazo'])
  9.             print "aqui se muestra el motivo..." + str(motivo)
  10.             # Aqui empezaria a guardar la data del campo.
  11.             return render_to_response('recaudos/mensaje.html', {'form': formulario, 'mensaje2': True,'username': request.user, 'title_page':'Verif. Recaudos'}, context_instance = RequestContext(request))
  12.             #motivo = str(request.GET['campo_rechazo'])
  13.         else:
  14.             print 'Ocurrio un error'
  15.             return render_to_response('recaudos/mensaje.html', {'form': formulario, 'mensaje2': True,'username': request.user, 'title_page':'Verif. Recaudos'}, context_instance = RequestContext(request))

popupRechazar.html
Código HTML:
{% extends "base_formulario.html" %}
{% block head %}
<script type="text/javascript">
	function guardar(name){
		document.getElementById(name).href="{% url recaudos.views.guardarRechazo %}";
		$('#items_recaudos2').click();
    }
</script>
{% endblock head %}

<form id="forma"  class="wufoo" method="get">
<table>
     <tr>
          <td align="center">
               {{form.title_motivo_rechazo}}
          </td>
          <td align="center">
               {{form.campo_rechazo}}
          </td>
     </tr>
</table>
<a name="guardar" id ="guardar" onclick="guardar(this.id)"> <input  class="btTxt" type="button" value="Guardar" /> </a>
</form> 
Espero sea útil el código, mi pregunta es ¿Cómo capturo esa info que escribo en el Textarea? Con eso resolvería todo =/

Gracias de antemano por sus respuestas

Última edición por AlvaroG; 06/05/2011 a las 07:54 Razón: resaltado de código
  #2 (permalink)  
Antiguo 06/05/2011, 08:00
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener Parámetros desde Popup (Python + Django )

¿Cómo es la URL generada? A simple vista el código javascript parece estar simplemente redirigiendo a la URL de guardarRechazo pero no parece estar enviando el formulario.

A propósito, ¿has pensado trabajar en el evento submit() del formulario en vez de usar un enlace con javascript?


saludos.
  #3 (permalink)  
Antiguo 06/05/2011, 12:33
Avatar de antonyshawn  
Fecha de Ingreso: mayo-2008
Mensajes: 18
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Obtener Parámetros desde Popup (Python + Django )

Cita:
Iniciado por AlvaroG Ver Mensaje
¿Cómo es la URL generada? A simple vista el código javascript parece estar simplemente redirigiendo a la URL de guardarRechazo pero no parece estar enviando el formulario.

A propósito, ¿has pensado trabajar en el evento submit() del formulario en vez de usar un enlace con javascript?


saludos.
Hola AlvaroG me acabo de dar cuenta que en mi código me comí algunas líneas, sería asi:

popupRechazar.html

Código Python:
Ver original
  1. {&#37; extends "base_formulario.html" %}
  2. {% block head %}
  3. <script type="text/javascript">
  4.     function guardar(name){
  5.         document.getElementById(name).href="{% url recaudos.views.guardarRechazo %}";
  6.         $('#items_recaudos2').click();
  7.     }
  8. </script>
  9. {% endblock head %}
  10.  
  11. <form id="forma"  class="wufoo" method="get" action="{% url recaudos.views.guardarRechazo %}">
  12. <table>
  13.     <tr>
  14.         <td align="center">
  15.             {{form.title_motivo_rechazo}}
  16.         </td>
  17.         <td align="center">
  18.             {{form.campo_rechazo}}
  19.         </td>
  20.     </tr>
  21. </table>
  22.  
  23. <!-- 1era opcion de boton -->
  24. <a name="guardar" id ="guardar" onclick="guardar(this.id)">
  25.     <input  class="btTxt" type="button" value="Guardar" />
  26. </a>
  27.  
  28. <!-- 2da opcion de boton submit-->
  29. <input  class="btTxt" type="submit" value="Guardar" name="guardar"/>
  30. </form>

Usando el button de la 2da opción no funciona, es decir no hace ninguna acción, por eso se hizo con javascript, pero no se como capturar lo del textarea "campo_rechazo" o en javascript o capturarlo en el views.py ??

PD: Disculpa no entendi a qué te refieres con "¿Cómo es la URL generada?" explicame please. Te lo agradezco de antemano la ayuda =)

Última edición por antonyshawn; 06/05/2011 a las 13:54 Razón: resaltar código
  #4 (permalink)  
Antiguo 06/05/2011, 14:23
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Obtener Parámetros desde Popup (Python + Django )

Me refería simplemente a que, tal y como está el código ahora mismo, seguramente tu URL sea algo como

tusitio.com/guardarMotivo

cuando debería ser, para que el envío sea exitoso, algo como esto:

tusitio.com/guardarMotivo?campo_rechazo=El_Texto_Introducido

Esto se debe a que estás simplemente creando un enlace, en vez de enviar el formulario.

Se me hace muy raro que no te funcione el envío vía submit, algo mal hay por allí. Un formulario básico no debería darte problemas. Haz esto: pega ese mismo formulario a un archivo HTML (sin el código Python, por supuesto) y probalo. estoy seguro que debería funcionarte. En caso contrario, creá en una página HTML normal un formulario que funcione, y luego adaptalo a tu plantilla.

De pasada, pega por acá el código HTML generado para el formulario.


Saludos.
  #5 (permalink)  
Antiguo 10/05/2011, 09:37
Avatar de antonyshawn  
Fecha de Ingreso: mayo-2008
Mensajes: 18
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Obtener Parámetros desde Popup (Python + Django )

Cita:
Iniciado por AlvaroG Ver Mensaje
Me refería simplemente a que, tal y como está el código ahora mismo, seguramente tu URL sea algo como

tusitio.com/guardarMotivo

cuando debería ser, para que el envío sea exitoso, algo como esto:

tusitio.com/guardarMotivo?campo_rechazo=El_Texto_Introducido

Esto se debe a que estás simplemente creando un enlace, en vez de enviar el formulario.

Se me hace muy raro que no te funcione el envío vía submit, algo mal hay por allí. Un formulario básico no debería darte problemas. Haz esto: pega ese mismo formulario a un archivo HTML (sin el código Python, por supuesto) y probalo. estoy seguro que debería funcionarte. En caso contrario, creá en una página HTML normal un formulario que funcione, y luego adaptalo a tu plantilla.

De pasada, pega por acá el código HTML generado para el formulario.


Saludos.
Hola AlvaroG bueno te cuento que modifiqué el diseño de la web, ya no será un PopUp sino una hoja normal y de esta manera sí capturo sin problemas el textarea y bueno me dijeron que podía dejarlo así aca en mi trabajo.

Básicamente lo que hice fue que en el HTML eliminé las líneas de Javascript para que no dimensionara la página y la dejara tal como una normal, y activé el botón de submit (el botón de la 2da opción) y listo, funcionó.

Gracias AlvaroG!! Saludos

Etiquetas: django, parametros, popup
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:35.