with tutorial framework espaƱol applications python django wsgi web-frameworks turbogears

tutorial - Django vs otros frameworks web de Python?



framework django python (13)

Casi he probado todos los marcos web de Python que existen, y me tomó mucho tiempo darme cuenta de que no había un marco de bala de plata, cada uno tenía sus propias ventajas y desventajas. Comencé con Snakelets y disfruté mucho de poder controlar casi todo a un nivel inferior sin mucho problema, pero luego descubrí TurboGears y lo he estado usando (1.x) desde entonces. Herramientas como Catwalk y la consola web son invaluables para mí.

Pero con el lanzamiento de TurboGears 2 que trae soporte para WSGI, y después de leer sobre los debates religiosos entre los campamentos de Django y WSGI, estoy realmente dividido entre "hacerlo de la manera correcta" , por ejemplo, aprender WSGI, pasar una valiosa función de escritura de tiempo eso ya existe en Django y otros marcos de pila completa, en lugar de usar Django o algún marco de alto nivel que hace todo por mí. Los inconvenientes con los últimos que puedo ver son bastante obvios:

  1. No estoy aprendiendo nada en el proceso
  2. Si alguna vez necesito hacer algo más bajo, será un dolor.
  3. La sobrecarga requerida para un sitio básico que usa autenticación es una locura. (OMI)

Entonces, supongo que mi pregunta es, cuál es la mejor opción, o es solo una cuestión de opinión, y ¿debería absorberla y usar Django si logra lo que quiero con un mínimo esfuerzo (quiero autenticación y una interfaz CRUD para mi base de datos)? Intenté con Werkzeug, Glashammer y amigos, pero AuthKit y Repoze me asustaron, así como la cantidad de pasos necesarios para configurar la autenticación básica. Miré a Pylons, pero la documentación parece faltar, y al hacer referencia a características simples como la autenticación o una interfaz CRUD, varias páginas wiki y documentación parecían contradecirse entre sí, con diferentes hacks para versiones y demás.

Gracias a S. Lott por señalar que no estaba lo suficientemente claro. Mi pregunta es: ¿cuál de las siguientes opciones vale la pena a largo plazo, pero no es dolorosa a corto plazo (por ejemplo, algún tipo de terreno intermedio, alguien?) - ¿Aprende WSGI, o apégate a un marco de "baterías incluidas"? Si fuera lo último, agradecería una sugerencia sobre si debería darle a Django otra oportunidad, seguir con TurboGears 1.x, o aventurarme en algún otro marco.

Además, he probado CherryPy, pero parece que no pude encontrar una aplicación CRUD lo suficientemente buena como para poder usarla de inmediato.


Aprender WSGI

WSGI es absurdamente simple. Es básicamente una función que se parece a ...

def application(environ, start_response) pass

La función se llama cuando se recibe una solicitud HTTP. environ contiene diversos datos (como el URI de solicitud, etc.), start_response es una función que se puede start_response se usa para establecer encabezados.

El valor devuelto es el cuerpo del sitio web.

aplicación def (environ, start_response): start_response ("200 OK", []) devuelve "..."

Eso es todo lo que hay, realmente ... No es un marco, sino más bien un protocolo para que los marcos web utilicen ...

Para crear sitios, el uso de WSGI no es la "forma correcta", usar los marcos existentes es ... pero, si está escribiendo un framework web de Python, usar WSGI es la manera correcta ...

El marco que usas (CherryPy, Django, TurboGears, etc.) es básicamente una preferencia personal. Juega en cada uno, ve cuál te gusta más, luego úsalo. Hay una pregunta de (con una gran respuesta) sobre esto ". Recomendación para los marcos de python directos "


Los debates religiosos entre los campos Django y WSGI.

Parece como si estuvieras un poco confundido acerca de qué es WSGI y qué es Django. Decir que Django y WSGI están compitiendo es como decir que C y SQL están compitiendo: estás comparando manzanas y naranjas.

Django es un marco, WSGI es un protocolo (que es compatible con Django) por la forma en que el servidor interactúa con el marco. Lo más importante, aprender a usar WSGI directamente es un poco como aprender ensamblar. Es una gran experiencia de aprendizaje, pero en realidad no es algo que deba hacer para el código de producción (ni estaba destinado a serlo).

En cualquier caso, mi consejo es que lo averigües por ti mismo. La mayoría de los marcos tienen un ejercicio de tipo "hacer un wiki / blog / encuesta en una hora". Pasa un poco de tiempo con cada uno y descubre cuál te gusta más. Después de todo, ¿cómo puedes decidir entre diferentes marcos si no estás dispuesto a probarlos?


¿Has comprobado web2py? Después de evaluar recientemente muchos marcos web de Python, he decidido adoptar este. También puedes ver Google App Engine si aún no lo has hecho.


¿Has echado un vistazo a CherryPy? Es minimalista, pero eficiente y simple. Es lo suficientemente bajo para que no pueda entrar en su camino, pero lo suficientemente alto como para ocultar la complejidad. Si recuerdo bien, TurboGears fue construido en él.

Con CherryPy, tienes la opción de todo mucho. (Marco de plantilla, ORM si se quiere, back-end, etc.)


Diría que la respuesta correcta depende de lo que realmente quiere y necesita, ya que lo que valdrá la pena a la larga dependerá de lo que necesitará a la larga. Si su objetivo es lograr que las aplicaciones se implementen lo antes posible, entonces la ruta ''más simple'', es decir. Django, es seguramente el camino a seguir. El valor de un sistema bien probado y documentado que no se puede subestimar exactamente lo que usted desea.

Por otro lado, si tiene tiempo para aprender una variedad de cosas nuevas que pueden aplicarse en otros dominios y desea tener la posibilidad más amplia de personalización, entonces algo como Turbogears es superior. Turbogears te ofrece la máxima flexibilidad, pero tendrás que dedicar mucho tiempo a leer documentos externos para cosas como Repoze, SQLAlchemy y Genshi para poder hacer cualquier cosa útil. Los documentos TG2 son deliberadamente menos detallados que los documentos TG1 en algunos casos porque se considera que los documentos externos son mejores de lo que solían ser. Si este tipo de cosas es un obstáculo o una inversión depende de sus propios requisitos.


Django definitivamente vale la pena aprender, y parece que se ajustará a tus propósitos. La interfaz de administración con la que viene es fácil de poner en marcha, y usa autenticación.

En cuanto a "cualquier nivel inferior", si te refieres a sql, es completamente posible empujar sql en tus consultas con la palabra clave adicional. Estilísticamente, siempre tratas de evitar eso tanto como sea posible.

En cuanto a "no aprender nada" ... la verdadera pregunta es si su preferencia es aprender principalmente algo de nivel inferior o superior, lo cual no es una pregunta que alguien pueda responder por usted.


Pilones me parece una gran herramienta:

  • un marco web real (CherryPy es solo un servidor web),
  • pequeño código base - reutilización de otros proyectos,
  • escrito enteramente con WSGI en mente, basado en Pegar,
  • le permite codificar la aplicación de inmediato y tocar los bits de bajo nivel si es necesario,

He usado CherryPy y TurboGears y miro muchos otros marcos pero ninguno de ellos fue tan ligero y productivo como lo es Pylons. Compruebe la presentación en Google .


Soy un fan de TurboGears, y esta es exactamente la razón por la cual: un intercambio muy bueno entre el control y hacer las cosas bien contra lo fácil.

Tendrás que tomar tu propia decisión, por supuesto. Quizás prefieras aprender menos, quizás más. Tal vez las áreas que me gustan de conocimiento / control (base de datos, por ejemplo), no podrían importarte menos. Y no malinterpretes. No estoy caracterizando ningún marco como necesariamente duro o incorrecto. Es solo mi juicio subjetivo.

También recomendaría TurboGears 2 si es posible. Cuando salga, creo que será mucho mejor que 1.0 en términos de lo que ha seleccionado para los valores predeterminados (genshi, pilones, SqlAlchemy)


Su pregunta parece ser "¿vale la pena aprender WSGI y hacer todo usted mismo" o usar un "marco de pila completo que hace todo por usted"?

Yo diría que es una falsa dicotomía y hay una tercera vía obvia. TurboGears 2 intenta proporcionar un camino sin problemas desde un marco de estilo "haz todo por ti" hasta un entendimiento del middleware WSGI, y la capacidad de personalizar casi todos los aspectos del marco para satisfacer las necesidades de tu aplicación.

Es posible que no tengamos éxito en todos los niveles y en todos los niveles, pero especialmente si ya tiene algo de experiencia con TurboGears 1, creo que la curva de aprendizaje TG2 será muy, muy fácil al principio y tendrá la capacidad de profundizar exactamente cuando lo necesita.

Para abordar sus problemas particulares:

  • Proporcionamos un sistema de autorización listo para usar que coincide con el que está acostumbrado desde TG1.
  • Proporcionamos una interfaz "django admin" fuera de la caja llamada tgext.admin, que funciona muy bien con dojo para hacer que una hoja de cálculo elegante como la interfaz sea la predeterminada.

También me gustaría abordar un par de las otras opciones que están ahí y hablar un poco sobre los beneficios.

  • CherryPy. Creo que CherryPy es un gran servidor web y un buen marco web minimalista. No se basa internamente en WSGI, pero tiene un buen soporte de WSGI, aunque no le proporcionará la experiencia de "pila completa". Pero para configuraciones personalizadas que deben ser rápidas y no son particularmente adecuadas para los valores predeterminados proporcionados por Django o TurboGears, es una gran solución.

  • Django. Creo que Django es un sistema muy bueno, muy integrado para desarrollar sitios web. Si su aplicación y estilo de trabajo se ajustan bien a su configuración estándar, puede ser fantástico. Sin embargo, si necesita ajustar el uso de su base de datos, reemplazar el idioma de la plantilla, usar un modelo de autorización de usuario diferente o, de lo contrario, hacer las cosas de manera diferente, es probable que se enfrente al marco.

  • Pylons Pylons like CherryPy es un excelente marco web minimalista. A diferencia de CherryPy, WSGI está habilitado en todo el sistema y proporciona algunos valores predeterminados sanos como SQLAlchemy y Mako que pueden ayudarlo a escalar bien. Los nuevos documentos oficiales son de una calidad mucho mejor que los documentos antiguos de wiki, que son lo que parece haber visto.


Sugiero echar otro vistazo a TG2. Creo que la gente no ha notado algunos de los avances que se han hecho desde la última versión. Aparte de la creciente pila de utilidades WSGI disponibles, hay varios elementos específicos de TG2 a considerar. Aquí hay un par de destacados:

Sistema de administración TurboGears : esta interfaz CRUD a su base de datos es completamente personalizable utilizando una clase de configuración declarativa. También se integra con Dojo para brindarte tablas infinitamente desplazables. La validación del lado del servidor también es automatizada. La interfaz de administración utiliza URLs RESTful y verbos HTTP, lo que significa que sería fácil conectarse a los estándares de la industria mediante programación.

CrudRestController / RestController - TurboGears proporciona una manera estructurada de manejar los servicios en su controlador. Brindándole la posibilidad de usar verbos HTTP estandarizados simplemente extendiendo nuestro RestController. Combine Sprox con CrudRestController, y puede poner crud en cualquier parte de su aplicación con formularios autogenerados totalmente personalizables. TurboGears ahora admite tipos mime como extensiones de archivo en la url, por lo que puede hacer que su controlador renderice .json y .xml con la misma interfaz que usa para renderizar html (devolviendo un diccionario desde un controlador)

Si hace clic en los enlaces, verá que tenemos un nuevo conjunto de documentación creada con esfinge que es más extensa que la documentación del pasado.

Con el mejor servidor web , ORM y sistema (s) de plantillas (escoja el suyo) bajo el capó, es fácil ver por qué TG tiene sentido para las personas que quieren ponerse en marcha rápidamente y aún tienen escalabilidad a medida que su sitio crece.

TurboGears se ve a menudo como un intento de alcanzar un objetivo en movimiento, pero somos coherentes con los lanzamientos, lo que significa que no tendrá que preocuparse por trabajar fuera del tronco para obtener las últimas funciones que necesita. Próximamente: más extensiones de TurboGears que permitirán que su aplicación aumente la funcionalidad con la facilidad de los comandos de pegado.


Web2py es la salsa secreta aquí. No te pierdas de comprobarlo.


Yo diría que estás siendo demasiado pesimista acerca de "no aprender nada" con Django o un marco de pila completo similar, y subestimar el valor de la documentación y una gran comunidad. Incluso con Django todavía hay una curva de aprendizaje considerable; y si no hace todo lo que desea, no es como si el código del marco fuera impenetrable.

Alguna experiencia personal: pasé años, de vez en cuando, jugando con Twisted / Nevow, TurboGears y algunos otros frameworks web de Python. Nunca terminé nada porque el código del marco estaba perpetuamente inacabado y reescrito debajo de mí, la documentación a menudo era inexistente o incorrecta y el único soporte viable era a través de IRC (donde a menudo recibía un gran consejo, pero sentí que estaba imponiendo si preguntaba también muchas preguntas).

En comparación, en los últimos dos años he eliminado algunos sitios con Django. A diferencia de mi experiencia anterior, en realidad están implementados y en ejecución. El proceso de desarrollo de Django puede ser lento y cuidadoso, pero da como resultado mucho menos bitrot y desprecio, y la documentación es realmente útil.

El soporte de autenticación HTTP para Django finalmente llegó hace unas semanas, si eso es a lo que te refieres en el # 3.


Yo sugeriría para TurboGears 2. Han hecho un trabajo fantástico al integrar lo mejor del mundo Python.

WSGI: Suponiendo que está desarrollando soluciones de negocios / proyectos moderadamente complejos en TG2 o en algún otro marco, diga Grok. A pesar de que estos marcos son compatibles con WSGI, ¿significa que uno de los que usan estos marcos tiene que aprender WSGI? En la mayoría de los casos, la respuesta es No. Quiero decir que es bueno tener este conocimiento, sin duda.

El conocimiento de WSGI es probablemente más útil en casos como

  • desea utilizar algún middleware o algún otro componente que no se proporcione como parte de la pila estándar para, por ejemplo. Authkit con TG o Grok sin ZODB .
  • Estás haciendo alguna integración.

CherryPy es bueno, pero piense en manejar las confirmaciones / reversiones de su base de datos al final de las transacciones, exponiendo json, validaciones en tales casos, TG, Django como marcos lo hacen todo por usted.