[pyar] Formularios y Urllib2 Django

Sebastián Seba ssebastianj en gmail.com
Vie Ago 3 13:00:40 ART 2012


El 28 de julio de 2012 03:55, Felipe Olaya <fluverk en gmail.com> escribió:

> Hola!, Tengo una duda, espero poder despejarla con la ayuda de
> ustedes, aun no logro entender como enviar varios parámetros a varias
> urls.
>
> Como decía si volvemos al código de arriba en PHP, que consta de dos
> partes iniciar sesión y enviar el mensaje.
>
> Nota: Ya no estoy trabajando con urllib2, ahora estoy testando la api
> requests.
>
> Aqui inicia sesión perfectamente.
> [HIGHLIGHT="Python"]
> import requests
> # login
> user = 'xxx'
> clave = 'xxx'
> url = 'http://dominio.com/subdominio/index.php'
> valores = {'app': 'page', 'inc': 'login', 'op': 'auth_login',
>            'username': user, 'password': clave}
> r = requests.post(url, data=valores)
> print r.content
> [/HIGHLIGHT]
>
> Que parte me perdi, porque no entiendo como enviar el mensaje por
> post, seria algo como así:
>
> [HIGHLIGHT="Python"]
> # send mensaje
> valores2 = {'app': 'menu', 'inc': 'send_sms', 'op': 'sendsmstopv'}
> r2 = requests.post(url, data=valores2)
> print r2.content
> [/HIGHLIGHT]
>
> Pero aparece como no ha iniciado sesión. Agradezco cualquier aporte,
> la idea principal es poder enviar el mensaje correctamente, tomando
> como plantilla el código PHP de arriba.
>
> Muchas Gracias.
> Saludos.
>
> El día 27 de julio de 2012 21:23, Lucas <rollbak en gmail.com> escribió:
> >
> > On Jul 27, 2012 11:16 PM, "Felipe Olaya" <fluverk en gmail.com> wrote:
> >>
> >> Hola!, estoy tratando de pasar una pequeña aplicación que tengo en PHP
> >> a Python, consta de un formulario que recibe unos valores, y se envían
> >> a una API: login y send valúes.
> >>
> >> El Código PHP
> >> //------------- datos recogidos ------------------
> >>     $postdata = "p_num_text=$nop&smstemplate=&message=$mensaje";
> >>         if($nop!="" && $mensaje!=""){
> >>             $ch = curl_init();
> >>       @fclose($O);
> >> //------------- Login ------------------
> >>             curl_setopt($ch, CURLOPT_URL,
> >> "http://dominio.com/subdominio/index.php");
> >>             curl_setopt($ch, CURLOPT_REFERER,
> >> "http://dominio.com/subdominio/index.php");
> >>             curl_setopt ($ch, CURLOPT_POST, 1);
> >>             curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows;
> >> U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203
> >> Firefox/3.6.13");
> >>             curl_setopt ($ch, CURLOPT_POSTFIELDS,
> >> "app=page&inc=login&op=auth_login&username=$username&password=$pass");
> >>             curl_setopt ($ch, CURLOPT_COOKIEJAR, $Cookies);
> >>             curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
> >>             $login = curl_exec ($ch);
> >>
> >>             //----------------- Enviar mensaje -------------------
> >>             curl_setopt($ch, CURLOPT_URL,
> >>
> >> "
> http://dominio.com/subdominio/index.php?app=menu&inc=send_sms&op=sendtopv_yes
> ");
> >>             curl_setopt($ch, CURLOPT_REFERER,
> >>
> >> "
> http://dominio.com/subdominio/index.php?app=menu&inc=send_sms&op=sendtopv
> ");
> >>             curl_setopt ($ch, CURLOPT_POST, 1);
> >>             curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows;
> >> U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203
> >> Firefox/3.6.13");
> >>             curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
> >>             //curl_setopt($ch, CURLOPT_COOKIEFILE, $Cookies);
> >>             curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
> >>             $send = curl_exec ($ch);
> >>
> >> Puedo decir que todo se divide en primero la autenticación y segundo
> >> el envío del mensaje.
> >>
> >> El Código Python
> >> import urllib, urllib2
> >>
> >> user = 'xxx'
> >> clave = 'xxx'
> >> url = 'http://dominio.com/subdominio/index.php'
> >> params = urllib.urlencode({'app': 'page', 'inc': 'login', 'op':
> >> 'auth_login', 'username': user, 'password': clave})
> >> urlx = urllib2.urlopen('http://slidetwo.dyndns.org/vasquez/index.php?%s
> '
> >> % params)
> >>
> >> ¿Que opinan?, el detalle esta que no esta autenticando, si imprimo
> >> params y copio y pego la url en un navegador me funciona.
> >>
> >> Muchas Gracias.
> >> Saludos.
> >>
> >> El día 27 de julio de 2012 06:21, Santiago Basulto
> >> <santiago.basulto en gmail.com> escribió:
> >> > Te recomiendo Requests en vez de urllib2 >
> >> > http://docs.python-requests.org/en/latest/index.html
> >> >
> >> > Con respecto a la documentación, el sitio de Django es el mejor lugar
> >> > para consultar. De todas maneras, viendo tu caso de uso, yo no
> >> > utilizaría el form para consultar la API (o para enviar el SMS).
> >> > Djanto tiene un mecanismo para manejar "eventos" llamado Signals
> >> > (https://docs.djangoproject.com/en/1.4/topics/signals/). Basicamente
> >> > lo que haces es atar una función que se ejecuta cada vez que se guarda
> >> > tu modelo. Entonces, el Form guarda el modelo y después se dispara la
> >> > signal.
> >> >
> >> > La ventaja de esto es que en cuanto puedas podés refactorizar la
> >> > signal para que se envíe de forma asincrónica.
> >> >
> >> > Saludos!
> >> >
> >> > El día 27 de julio de 2012 01:42, Felipe Olaya <fluverk en gmail.com>
> >> > escribió:
> >> >> Hola, Tengo problemas al crear un formulario que reciba un código
> país,
> >> >> numero celular y por ultimo un cuerpo mensaje y enviar esta
> información
> >> >> por
> >> >> medio de urllib2 a una API.
> >> >>
> >> >> No tengo idea como empezar he leído mucha información pero no he
> >> >> logrado
> >> >> hacerlo funcionar, si alguien me puede facilitar algún tipo de
> >> >> documentación
> >> >> para llevar acabo esto, lo agradezco.
> >> >>
> >> >> La idea es crear una aplicación, que conste de un formulario sencillo
> >> >> para
> >> >> enviar SMS gratis.
> >> >>
> >> >> Muchas Gracias.
> >> >> Saludos.
> >> >>
> >> >> _______________________________________________
> >> >> pyar mailing list pyar en python.org.ar
> >> >> http://listas.python.org.ar/listinfo/pyar
> >> >>
> >> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >> >>
> >> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre
> de
> >> >> Argentina - http://www.usla.org.ar
> >> >
> >> >
> >> >
> >> > --
> >> > Santiago Basulto.-
> >> > _______________________________________________
> >> > pyar mailing list pyar en python.org.ar
> >> > http://listas.python.org.ar/listinfo/pyar
> >> >
> >> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >> >
> >> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> >> > Argentina - http://www.usla.org.ar
> >> _______________________________________________
> >> pyar mailing list pyar en python.org.ar
> >> http://listas.python.org.ar/listinfo/pyar
> >>
> >> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >>
> >> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> >> Argentina - http://www.usla.org.ar
> >
> > En el código PHP estas hacieno el request por POST y en el código python
> lo
> > estás haciendo por GET.
> >
> > Esa puede ser la causa de q no te funcione.
> >
> >
> > _______________________________________________
> > pyar mailing list pyar en python.org.ar
> > http://listas.python.org.ar/listinfo/pyar
> >
> > PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
> >
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>

Tenés que crear una Sesión [0] para que te almacene las cookies entre
peticiones:

[0] http://docs.python-requests.org/en/latest/user/advanced/#session-objects
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120803/4ca359c7/attachment.html>


More information about the pyar mailing list