Ver Mensaje Individual
  #1  
Antiguo 25-06-2012
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Thumbs up Aprendiendo a programar HTTP con python, superfacil

Constantemente en este foro y otros se ven preguntas relacionadas con apps/sitios web (ya sea php, delphi, .net) que evidencian en el fondo un problema: Realmente no se entiende que es http, html y similares.

La cosa es que frameworks como asp.net, intraweb, django estan muy arriba en la abstraccion, y cosas como php y, cgi y similares muy abajo.

Una *excelente* forma de entender todo este asunto, es usar un *micro* framework.

Uno en python que es supersimple, superfacil de instalar (es solo 1 archivo), se aprende -literalmente- en 1 dia y que provee un buen fundamento para entender todo el asunto es:

http://bottlepy.org/

Esto es un ejemplo, de un servidor web + pagina, corriendo en localhost:8080

Código PHP:
from bottle import routerun

@route('/hello/:name')
def index(name='World'):
    return 
'<b>Hello %s!</b>' name

run
(host='localhost'port=8080
Esto es mas completo, mostrar un pagina de login:

Código PHP:
from bottle import getpostrequest

@get('/login'# or @route('/login')
def login_form():
    return 
'''<form method="POST">
                <input name="name"     type="text" />
                <input name="password" type="password" />
              </form>'''

@post('/login'# or @route('/login', method='POST')
def login_submit():
    
name     request.forms.get('name')
    
password request.forms.get('password')
    if 
check_login(namepassword):
        return 
"<p>Your login was correct</p>"
    
else:
        return 
"<p>Login failed</p>" 
Lo bueno de este ejemplo es que los decoradores @get / @post hacen EXPLICITO que estamos trabajando con los verbos HTTP GET/POST

El tutorial:

http://bottlepy.org/docs/dev/tutorial.html

Muestra los aspectos elementales de combinar HTTP/HTML:

- Uso de los headers
- Descarga de archivos
- Uso de cookies de forma manual
- Cambiar el formato de respuesta (ej: de html a xml)
- Uso de plantillas (para algo mucho mejor y mas potente: http://jinja.pocoo.org)

Y muestra como hacer una pagina de tareas:

http://bottlepy.org/docs/dev/tutorial_app.html

y como hacer una pagina en tiempo real (ie: chat):

http://bottlepy.org/docs/dev/async.html

Mientras un framework como https://www.djangoproject.com/ es algo mucho mas completo, he aprendido que no entender el desarrollo web a un nivel mas elemental se convierte en un problema.

Espero les guste.

P.D: Otras opciones:

http://flask.pocoo.org/

http://webpy.org/
__________________
El malabarista.
Responder Con Cita