En este tutorial, que consta de dos partes, voy a dar una pequeña introducción a juno, un miniframework web creado en python que nos va a permitir hacer pequeñas aplicaciones web de forma muy simple y rápida. En esta primera parte comentaré qué es python, qué es un miniframework, que es juno, en la segunda parte presentaré una aplicación de ejemplo que explicaré paso a paso.
Este tutorial forma parte de una serie
- Ir a la 1ª Parte – Mini Aplicaciones Web con Python y Juno
- Ir a la 2ª Parte – Mini Aplicaciones Web con Python y Juno
Una pequeña introducción: python
El objectivo de este tutorial no es enseñar python, pero si daré una pequeña introducción y algunos enlaces para empezar de forma sencilla. Python es un lenguaje de programación, que aparte de todo lo que cuenta la wikipedia, nos permite hacer las cosas muy mucha rapidez.
¿Y por qué?, hay varias razones, entre ellas la gran cantidad de librerías que hay a nuestra disposición (y su facilidad de uso), las facilidades que da el lenguaje para manejar estructuras de datos y otros útiles muy comunes. Podría escribir mucho acerca de esto, pero lo mejor es que os paseis un rato jugando con la consola.
La instalación es muy simple, en windows basta con bajar el instalable e instalar al método tradicional, en linux, depende del sabor, si estás usando una basada en debian, por ejemplo ubuntu, con un:
$ apt-get install python2.6
Para empezar a trabajar se puede arrancar una consola interactiva ejecutando “python” en la línea de comandos o creando un fichero “.py”:
texto = "soy javisantana y me gusta python" print "hola, %s" % texto
Lo guardamos y en la línea de comandos ejecutamos: python fichero.py Así de simple. recomiendo la lectura del manual de python que viene con la instalación o la infinidad de manuales que hay escritos en la red.
Miniframeworks
Te sonarán posiblemente las palabras spring, structs, ruby on rails, CakePHP, Symfony, django, etc, etc no son más que frameworks que permiten agilizar (bueno, en algunos casos) el desarrollo web. Hace una separación clara de modelo-vista-controlador, dan recursos para acceder a los modelos, la creación de los templates, sesiones, autentificación, formularios y en general todo lo necesario para construir una aplicación web de hoy en día.
Los frameworks nos permiten agilizar el desarrollo, organizados en la mayoría de los casos bajo el patrón Modelo-Vista-Controlador, proporcionando las bases para optimizar al máximo el tiempo de desarrollo.
Aparte de estos, hay otros, catalogados (realmente no sé si están catalogados, pero yo lo hago
, como mini frameworks, esto es, dan funcionalidad recortada con respecto a los anteriores a cambio de simplicidad y claridad. Ejemplo de esto es sinatra para ruby y juno en python. Hay muchos más, no hay más que dar una vuelta por github.
Juno
Para empezar, el típico “hola mundo”:
from juno import *
@route('/')
def index(web):
return 'hola!'
run()
Si guardais esto en un fichero y lo ejecutais tendreis un bonito servidor web corriendo. Basta con ir a http://127.0.0.1:8000/ para ver un “hola!”, poco útil, pero lo suficiente para mostrar lo simple que puede ser hacer un pequeño servicio web.
Instalación
La instalación no puede ser más simple:
$ easy_install SQLAlchemy $ easy_install jinja2 $ easy_install juno
easy_install es una de las formas que tiene python para instalar librerías de terceros. La forma de trabajo es similar a apt-get, le indicas el nombre de la librería o paquete, lo busca en internet, lo baja e instala. Para instalar easy_install basta con ir a su web. Descarga directa para windows, en linux “apt-get install python-setuptools”.
Uso básico
El ejemplo anterior era muy simple, vamos a empezar a complicar la cosa. Pongamos que queremos saludos personalizados (para ser originales
).
@route('/:nombre/')
def hola(web, nombre):
return 'Hola, %s' % nombre
run()
Bien, ahora si apuntamos a http://127.0.0.1:8000/javi mi navegador me mostrará un amable “Hola, javi”.
Pero la realidad que es realmente feo, sería más interesante poder poner html, css, javascript… no hay problema. Creamos una carpeta llamada “templates” y en ella ponemos nuestra web:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>juno</title>
</head>
<body>
<h1> Hola, {{nombre}} </h1>
</body>
</html>
Y el nuevo código en el fichero.py
from juno import *
@route('/:nombre/')
def hola(web, nombre):
template('index.html', nombre=nombre)
run()
Bien, ya sabemos usar plantillas y enrutar peticiones, solo falta otra cosa que suelen tener las aplicaciones web: la base de datos, el lugar donde almacenar los datos de la aplicación. Supongamos que queremos almacenar todas las personas que saludan.
Primero configuramos la base de datos… tranquilos, aquí no hay miles de xmls, no hay pesados mapeos, sólamente le decimos donde está nuestra base de datos y lo que queremos guardar:
init({'db_location': 'amigos.db'}) # usamos sqlite, el fichero será amigos.db
# también podríamos usar mysql, postgre
Amigos = model('Amigos', nombre='string') # esto definirá una tabla llamadas Amigos con una columna llamada nombre
Esto es todo, no hay que ir a la base de datos a crear las tablas, python las crea por ti.
El código de la aplicación quedaría así:
@route('/:nombre/')
def hola(web, nombre):
#salvamos el nuevo amigo
Amigos(nombre=nombre).save() # similar a un insert ...
amigos = find(Amigos).all() # similar a un select * from Amigos
template('index.html', nombre=nombre, amigos=amigos)
y el template tal que así:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>juno</title>
</head>
<body>
<h1> Hola, {{nombre}} </h1>
<h2>Otras personas que han visitado la web:</h2>
<ul>
{% for amigo in amigos %}
<li>{{amigo.nombre}}</li>
{% endfor %}
</ul>
</body>
</html>
Reflexión final de esta primera parte
En la siguiente entrada haremos una aplicación un poco más complicada donde se pueda ver en un caso real como funciona juno. De momento podeis leer la documentación de juno o ir jugando con la consola python.




















Comentarios en esta publicación (6 comentarios)
¿Te ha gustado esta publicación? ¡Puedes compartir tu opinión con todos nosotros! Simplemente pincha aquí mismo.