2012-05-27 17 views
7

No quiero molestarlos a todos con los detalles, pero básicamente soy un estudiante de segundo año compsci sin experiencia en desarrollo web.Mi primera aplicación web (Python): ¿uso CGI o un framework como Django?

Básicamente, quiero crear una pequeña "aplicación web" que acepte la entrada desde un formulario html, hacer que un script python realice algunos cálculos y volver a mostrar esos resultados en su navegador.

A partir de ahora, he creado la forma y el script. Sin embargo, cuando trato de probar el formulario, en lugar de ejecutar el script, mi navegador intenta descargarlo. A mi entender, este es un problema de script cgi, y creo que debo crear un servidor web para probar este script.

Y aquí estaba yo estoy atascado. Sé poco o nada sobre los servidores web y cómo configurarlos. Además de eso, he escuchado que las secuencias de comandos de GCI son una cosa del pasado, y que requieren una gran sobrecarga para funcionar correctamente.

Esto lleva a mis preguntas. ¿Cómo hago para completar mi aplicación y probar mi script cgi? ¿Instalo apache y lío con él o debería estar buscando algo así como el motor de la aplicación de Google? ¿Hay otras maneras de completar esta tarea sin scripts cgi? ¿Dónde caben marcos como Django en esto?

+2

Una dicotomía falsa aquí: hay una gran cantidad de territorio entre Django y CGI. Personalmente recomiendo webapp2, que se incluye con App Engine, y es muy liviano. FYI, el bajo nivel equivalente a CGI en las arquitecturas modernas (Python) es WSGI, sin embargo. –

Respuesta

9

Django, a pesar de ser agradable, abarcador y bien respaldado, a veces es demasiado para una aplicación web pequeña. Django quiere que sigas sus reglas desde el principio, tendrás que evitar cosas como la base de datos y los paneles de administración si no los necesitas. También es más fácil, con Django, seguir el diseño de su proyecto, incluso cuando es demasiado complejo para una aplicación simple.

Las llamadas microestructuras pueden ser más adecuadas para su pequeña aplicación. Se basan en el principio opuesto: use el mínimo de funciones ahora, agregue más según lo necesite.

  • Flask se basa en la biblioteca WSGI Werkzeug y de plantillas Jinja2 (este último es conmutable), está documentado extensamente (con notes concerning virtualenv and stuff) y bien adaptado para las pequeñas y grandes aplicaciones por igual. Viene incluido con un servidor de desarrollo de recarga automática (sin necesidad de Apache en su máquina de desarrollo) y un depurador interactivo alimentado por Werkzeug. Hay extensiones para cosas como HTML forms y database ORM.

  • Bottle es tan pequeño como puede obtenerse un microframework, que consta de 1 (un) archivo, servidor de desarrollo incluido. Colóquelo en la carpeta de su proyecto y comience a piratearlo. El motor de plantillas SimpleTemplate incorporado es conmutable, pero el servidor de desarrollo es más inestable que el de Flask. La documentación es menos completa y, en mi opinión, todo es menos pulido y conveniente como Flask.

En ambos casos, se utiliza el servidor dev localmente, y luego desplegar el uso de WSGI, la interfaz del servidor de aplicaciones Python web que soporte ambos marcos. Hay muchas formas de implementar una aplicación WSGI, Apache mod_wsgi siendo una de las más populares.

Iría totalmente con Flask a menos que una dependencia (Botella) sea mejor que tres (Frasco, Jinja2 y Werkzeug).

(También hay muchos otros marcos, así que espere a que los usuarios vengan y hablen de ellos. Sugeriría que evite web.py: funciona, pero está lleno de magia, y es poco elegante en comparación con Flask o Bottle .)

-1

Django viene con su propio servidor, pero en su caso recomendaría apache y mod_python, ya que parece ser un sitio bastante simple que está construyendo.

Configurar Apache es rápido y una simple búsqueda en la web debería darle todo lo que necesita. Puede encontrar más información sobre mod_python here leyendo un poco sobre él y luego google después de un tutorial que se ajuste a sus necesidades.

+3

Recomendar 'mod_python' siempre es una mala idea. Está en desuso en favor de 'mod_wsgi'. – ThiefMaster

+1

"Actualmente mod_python no está en desarrollo activo. Esto no significa que esté" muerto ", como algunos han afirmado, sino que significa que el código y el proyecto son lo suficientemente maduros cuando se necesita muy poco para mantenerlo". –

+2

https://docs.djangoproject.com/en/1.3/howto/deployment/modpython/ - * El soporte para mod_python ha quedado obsoleto y se eliminará en Django 1.5. Si está configurando una nueva implementación, le recomendamos encarecidamente que considere usar mod_wsgi o cualquiera de los otros servidores compatibles. * – ThiefMaster

3

Parece que la mayoría de los desarrollos web de Python parecen estar hechos por frameworks en estos días. Hay un par de razones para esto:

  1. una plétora de herramientas maduras. Django ha incorporado autenticación de usuario, administración integrada de bases de datos, sesiones integradas, integradas en casi todo ORM, lo que le permite soportar sin problemas un par de bases de datos.

  2. Built-in webservers. Los frameworks python más grandes como django y pilones han incorporado servidores web. Django tiene un servidor web muy simple python manage.py startserver (tan simple) Eso hace que sea extremadamente fácil crear y depurar aplicaciones. Es de un solo subproceso, por lo que colocar un depurador en él es fácil

  3. Enormes comunidades. Si tienes una pregunta sobre django, se responderá muy rápidamente, así que la comunidad es enorme.

El tutorial de django le presentará todos los aspectos principales del desarrollo. Solo tiene 4 páginas y podrá hacer que su aplicación sea mucho más simple que tener que leer, aprender y jugar con una configuración de Apache. https://docs.djangoproject.com/en/dev/intro/tutorial01/

Aunque django por ahora podría ser excesivo si su aplicación solo va a tener 1 formulario y un script para procesarlo.Debido a su marco de prueba sin fisuras, es bastante fácil hacer crecer cualquier proyecto. Nunca utilicé matraz o botella ni los otros microframeworks, pero tendría en cuenta dónde se ubicará su proyecto en el futuro.

En cuanto a donde django encaja en esto, es un marco de pila completo que abarca presentación (plantillas), administración de datos (servidor orm), autenticación, middleware, formularios ... todo lo necesario para crear una aplicación web completamente inclusiva. Django y casi todos los demás frameworks python implementan el estándar wsgi. Es una interfaz que permite la interoperación entre servidores web. http://en.wikipedia.org/wiki/Web_Server_Gateway_Interface es bastante seco y nunca tendrá que interactuar directamente. Eso es lo que hacen estos marcos bajo el capó.

4

Una forma de acceder a la aplicación de Internet rápidamente es comprender primero y luego modificar, algo así como el ejemplo de App Engine "guestbook". Esto tiene el beneficio de que gran parte de lo que de otro modo sería necesario para ejecutar un servidor web y configurar un servidor de base de datos (suponiendo que necesita persistencia) se hace por usted. App Engine también proporciona un entorno de desarrollo bastante flexible. Ciertamente, no es la única manera de hacerlo, y admitiré que soy parcial al recomendarlo, pero es bastante bajo en fricción.

Las secuencias de comandos de GCI apenas son cosa del pasado, aunque no es lo que están haciendo los chicos geniales. CGI tiene el beneficio, y la maldición, de exponer más de la tubería sin procesar.Te obliga a comprender mucho sobre la arquitectura web primitiva (en el sentido de bajo nivel), pero también es un gran bocado para morder si tienes un problema inmediato para resolver que pueda resolverse por medios más simples.

Cuestiones relacionadas