[pyar] Sitios estáticos con Python

manuel quiñones manuel.por.aca en gmail.com
Sab Abr 2 15:42:09 ART 2011


Hola lista,

cada vez que me piden una web de páginas estáticas reviso mis métodos,
comparándolos con las webs dinámicas que hago, usando web frameworks.
Una que es fija (hablando de estáticos, je) es el uso de un sistema de
templates.  Y según el caso, persisto los datos en una base de datos,
en archivos json, o directamente en las estructuras de datos de
Python: dicts, lists, objects.

Pero lo que todavía extrañaba de los web frameworks era el manejo de
las urls internas del sitio.  La capacidad de hacer, en un template,
por ejemplo:

<a href="{{ url_for('documentos', docu['slug']) }}>{{ docu['titulo'] }}</a>

para obtener el link:

<a href="/misitio/documentos/hola-mundo">Hola mundo</a>

resultado que depende de la definición de las URLs del sitio.

Es por eso que tomé el código del web framework Flask [0] y lo achuré
hasta obtener algo que masomenos sirva a mi propósito.  Y este es el
resultado:

https://bitbucket.org/manuq/pytaso

Básicamente se usa escribiendo vistas, por ejemplo:

@site.page('/users/<int:user_id>', users_params)
def users(user_id, name):
    return site.render_template("user_item.html", name=name)

Esa función es bien parecida a una view de Flask, decorada con la URL.
 Pero en este caso, la URL no sirve para manejar un request HTTP, sino
que se usa para generar los archivos html y ordenarlos en directorios,
es decir, para crear el famoso "htdocs".  Y se hace usando ese
parámetro extra del decorator, que Flask no tiene: una lista de
parámetros para llamar a la función, que en este caso es:

users_params = [({'user_id': 123}, {'name': 'alice'}),
               ({'user_id': 888}, {'name': 'bob'})]

En ese repo hay un ejemplo [1] que pueden chusmear, y de paso contarme
qué les parece, si esto sirve a alguien más, etc.


[0]: http://flask.pocoo.org
[1]: http://tinyurl.com/3qjpbbt


-- 
.. manuq ..



More information about the pyar mailing list