framework - Desarrollo web de Python, con o sin un marco
python web (8)
Estoy planeando portar una aplicación PHP a Python. La aplicación se trata principalmente de recopilación y procesamiento de datos. La aplicación principal se ejecuta como una aplicación de línea de comando independiente. Hay una interfaz web para la aplicación que es básicamente una interfaz de informes muy ligera.
No utilicé un framework en la versión PHP, pero siendo nuevo en Python, me pregunto si sería ventajoso usar algo como Django o al menos Genshi. La advertencia es que no quiero que la distribución de mi aplicación se vea abrumada por las partes del marco que necesitaría distribuir con la aplicación.
¿Usar la importación de cgi en Python es la mejor manera de hacerlo en esta circunstancia? Tiende a pensar que un marco de trabajo es demasiado alto, pero tal vez no estoy pensando de una manera muy "pitón" sobre ellos. ¿Qué sugerencias tienes en este escenario?
Depende de la forma en que va a distribuir su aplicación.
Si solo se usará internamente, vaya a django. Es un placer trabajar con eso. Sin embargo, django realmente se queda corto en la tarea de distribución; Las aplicaciones django son difíciles de configurar.
Depende del tamaño del proyecto. Si tuvieras solo unas pocas secuencias de comandos php previas que llamaran a tu aplicación independiente entonces probablemente iría por una aplicación cgi.
Si tiene uso para bases de datos, reescritura de URL, plantillas, administración de usuarios y demás, entonces usar una infraestructura es una buena idea.
Y, por supuesto, antes de portarlo, considere si vale la pena simplemente cambiar el idioma o si hay características específicas de Python que necesita.
¡Buena suerte!
Django hace posible lanzar rápidamente un sitio web, eso es seguro. No necesitas ser un maestro de Python para usarlo, y dado que es muy pitónico en su diseño, y no hay realmente ninguna "magia", te ayudará a aprender Python en el camino.
Comience con los ejemplos, vea algunos screencasts de django de TwiD y estará en camino.
Comience lentamente, modificando el administrador, y jugar con él a través de shell es la manera de comenzar. Una vez que controlas el ORM y obtienes cómo funcionan las cosas, ¡comienza a construir las cosas reales!
El marco no va a causar ningún problema de rendimiento, como dijo S. Lott, es código que no tiene que mantener, y ese es el mejor tipo.
Hace poco porté una aplicación PHP a Python usando web.py. A medida que avanzan los marcos, es extremadamente liviano con dependencias mínimas, y tiende a mantenerse fuera de su camino, por lo que podría ser el compromiso que está buscando.
Sin embargo, todo depende de la aplicación inicial, ya que con una aplicación grande, las ventajas de tener un marco de trabajo con todas las características para manejar las tuberías son mayores que las desventajas de tener que arrastrar todo el código de la estructura.
La línea de comando Python, IMO, definitivamente es lo primero. Haz que eso funcione, ya que ese es el núcleo de lo que estás haciendo.
El problema es que usar el ORM de un framework web desde una aplicación de línea de comandos no es obvio. Django proporciona instrucciones específicas para usar su ORM desde una aplicación de línea de comandos. Esos son molestos al principio, pero creo que son un salvavidas en el largo plazo. Lo uso mucho para cargas gigantes de archivos proporcionados por el cliente.
No use CGI desnudo. No es imposible, pero muchas cosas pueden salir mal, y todas han sido resueltas por los marcos. ¿Por qué reinventar algo? Solo usa el código de otra persona.
Los marcos implican aprendizaje, pero no "gastos generales" reales. No son lentos Son códigos que no tienes que escribir o depurar.
Aprende algo de Python.
Haz el tutorial de Django .
Comience a construir una aplicación web.
a. Comience un proyecto de Django. Crea una pequeña aplicación en ese proyecto.
segundo. Construya su nuevo modelo usando el Django ORM. Crea una prueba de unidad Django para el modelo. Asegúrate de que funcione Podrá usar las páginas de administrador predeterminadas y jugar mucho. Simplemente no construyas todo el sitio web todavía.
Haga que su aplicación de línea de comandos funcione con Django ORM. Básicamente, debes definir el archivo de configuración para que esta aplicación funcione correctamente. Ver la sección configuración / configuración .
Una vez que tenga su línea de comando y la administración predeterminada en ejecución, puede finalizar la aplicación web.
Aquí está la regla de oro de los marcos: es código que no tiene que escribir, depurar o mantener. Usalos, usalos a ellos.
Podría considerar usar algo como web.py, que sería fácil de distribuir (ya que es pequeño) y también sería fácil adaptar sus otras herramientas, ya que no requiere que se presente al marco tanto como Django. .
Sin embargo, ten en cuenta que no es el marco más apreciado en la comunidad de Python, pero podría ser lo adecuado para ti. También puede consultar web2py , pero sé menos sobre eso.
Ir por un marco. Cosas básicas como el manejo de sesiones son una pesadilla si no usas una porque Python no está especializado en la web como PHP.
Si crees que el django es demasiado, puedes probar uno más ligero como el muy pequeño pero útil web.py.
Por el amor de Pete, utiliza un marco! Hay literalmente docenas de frameworks por ahí, desde cherrypy hasta django y albatros hasta ... bueno ... lo que sea. De hecho, la gran cantidad de marcos web es a lo que la gente apunta cuando lloriquean sobre la popularidad de Rails.
La comunidad de desarrollo web Python está dividida sin una sola voz. ¡Pero ese es otro tema en total! El punto es que hay "toolkits web" (por ejemplo, albatros) que son bastante livianos pero lo suficientemente potentes como para pasar el día (por ejemplo, verificar automáticamente que un bot no haya falsificado un formulario simple o ayudar a mantener MVC limpio )
Si quieres algo que no sea "demasiado marco" mira aquí:
http://wiki.python.org/moin/WebFrameworks
Consulte "Marcos básicos que proporcionan plantillas". Son todos livianos y hacen todo el trabajo de "no reinventar la rueda" sin forzar una camioneta Mac en ti.