2010-06-03 9 views
5

Me encanta webpy, es realmente bastante pitónico, pero no me gusta tener que agregar las asignaciones de URL y crear una clase, normalmente con solo 1 función dentro. Estoy interesado en minimizar la escritura de códigos y creación de prototipos rápidamente.Marco web más eficiente que Web.py? Extremadamente Ptónico por favor!

¿Alguien tiene sugerencias prometedoras como Bobo, Nagare, Bottle, Flask, Denied, cherrypy para un amante de las cosas buenas de webpy?

¿Qué es una buena razón?

Además, no me importa perderme (fuertemente) los sistemas de creación de plantillas basados ​​en texto, utilizo la generación de HTML orientado a objetos. El código debe ser capaz de ver algo como esto:

def addTask(task): 
    db.tasks.append({'task':task,'done':False}) 
    return 'Task Added' 
def listTasks(): 
    d = doc() 
    d.body.Add(Ol(id='tasks')) 
    for task in db.tasks: 
     taskStatus = 'notDoneTask' 
     if task.done: taskStatus = 'doneTask' 
     d.body.tasks.Add(Li(task.task,Class=taskStatus)) 
    return d 

minimalista CherryPy está buscando como un fuerte contendiente en este momento. ¿Habrá un último minuto de otro?

+0

Estoy un poco confundido acerca de cómo llegaría desde las URL a las funciones enumeradas en su ejemplo. –

+0

Vea el ejemplo de CherryPy, es el mismo mapeo intuitivo de nombres de funciones. So/listTasks mostraría las tareas. –

+0

Ah, ya veo. Supongo que podrías hacer algo de magia de introspección para obtener lo mismo, pero eso es, por supuesto, una solución asquerosa. –

Respuesta

9

Flask, el microframework de Armin Ronacher construido encima de Werkzeug, Jinja2 y buenas intenciones (aunque puede usar cualquier motor de plantillas que desee, o ninguno), hace un mapeo de URL muy concisamente.

@app.route("/") 
def index(): 
    return """Hello, world. <a href="/thing/spam_eggs">Here's a thing.</a>""" 

@app.route("/thing/<id>") 
def show_thing(id): 
    return "Now showing you thing %s."%id 
    # (or:) return render_template('thing.html', id = id) 

Quizás eso es lo que estás buscando?

+0

Gracias. Eso es un poco menos duplicación de texto que con webpy, pero quiero hacerlo mejor. Agregué un ejemplo a la pregunta. –

6

CherryPy le permite conectar manipuladores en un árbol en lugar de expresiones regulares. Donde web.py podría escribir:

urls = (
    '/', 'Index', 
    '/del/(\d+)', 'Delete' 
) 

class Index: 
    def GET(self): ... 

class Delete: 
    def POST(self, id): ... 

El CherryPy equivalente sería:

class Delete: 
    def POST(self, id): .... 

class Index: 
    del = Delete() 
    def GET(self): ... 

Usted puede incluso prescindir de clases totalmente en CherryPy:

def delete(id): ... 
def index(): ... 
index.del = delete 
+0

Gracias fumanchu, me gusta especialmente el ejemplo sin clases. Agregué un ejemplo a la pregunta también. –

1

Yo era un usuario de webpy . Y últimamente, he encontrado django, y creo que es genial. Solo puede enfocarse en la lógica de su negocio y el marco hará la mayoría de las cosas por usted.

+0

Estoy estrictamente buscando opciones más livianas. Si el sistema MVC de Django era tan liviano como el ejemplo de MVC de no fumanchu, podría ser un contendiente. Soy muy consciente de Django, y estoy buscando ir más allá, así que menos cosas tienen que encajar en mi cabeza para prototipar y desarrollar realmente. La simplicidad y la mezcla y la coincidencia son probablemente la clave aquí. Estoy buscando la cantidad mínima de teclas necesarias. –

+0

Nagare, por ejemplo, puede estar mucho más cerca que Django, aunque puede que no sea tan mezcla y coincida como Cherrypy. http://www.nagare.org –

+0

Con Django, puede prescindir de los modelos y plantillas, y simplemente tener las vistas que están mapeadas con un URLConf. Django PUEDE ser muy ligero con respecto al código que necesita para escribir, al tiempo que proporciona un montón de métodos y clases de ayuda para minificar aún más el código. –