2009-07-01 16 views
19

Soy bastante hábil en PHP, pero quiero probar algo nuevo.Escribiendo un sitio web en Python

También conozco un poco de Python, lo suficiente como para hacer lo básico de lo básico, pero no lo he usado en una situación de tipo de diseño web.

que acabo de escribir esto, que funciona:

#!/usr/bin/python 

def main(): 
    print "Content-type: text/html" 
    print 
    print "<html><head>" 
    print "<title>Hello World from Python</title>" 
    print "</head><body>" 
    print "Hello World!" 
    print "</body></html>" 

if __name__ == "__main__": 
    main() 

cosa es que esto parece bastante engorroso. Sin usar algo tan grande como django, ¿cuál es la mejor manera de escribir scripts que puedan procesar get y post?

+9

La razón por la que Python puede parecer engorroso al principio es que PHP se basa en la creación de páginas web, es su propio lenguaje de plantillas y tiene un marco integrado para el manejo de solicitudes, análisis de parámetros, cookies, etc.Python, por otro lado, es un lenguaje de propósito general, y la implementación directa de los elementos web de bajo nivel te volverá loco bastante rápido. –

+1

Tentado a responder a su pregunta con "... Es una mala idea";) – roosteronacid

Respuesta

24

Su pregunta era acerca de las secuencias de comandos CGI básicas, mirando su ejemplo, pero parece que todos han elegido responderlo con "usar mi marco de trabajo favorito". Probemos con un enfoque diferente.

Si está buscando un reemplazo directo de lo que escribió anteriormente (es decir, scripts CGI), entonces probablemente esté buscando el módulo cgi. Es una parte de la biblioteca estándar de Python. La funcionalidad gratuita está disponible en urllib y urllib2. También podría estar interesado en BaseHTTPServer y SimpleHTTPServer, también parte de la biblioteca estándar.

Entrar en el territorio más interesante, wsgiref le da los fundamentos de una interfaz WSGI, momento en que es probable que desee empezar a pensar más "frameworky" (es que una palabra?) Cosas como web.py, Django, los pilones , CherryPy, etc., como otros lo han mencionado.

+2

Buena respuesta en profundidad - ¡gracias! –

+4

Esta respuesta es correcta, y sin duda le permitirá explorar la escritura de CGI en Python. Pero no te ayudará a aprender el enfoque Pythonic para resolver este problema en particular. El enfoque Pythonic para este problema se encuentra en todas las respuestas que obtuvo acerca de los diversos marcos web que están disponibles y en desarrollo y soporte activo. –

+0

Sí, pero quiero entender cómo funcionan las cosas en un nivel inferior primero. –

11

En cuanto a los marcos completos, creo que Django es relativamente pequeño.

Si realmente quiere ligero, sin embargo, echa un vistazo a web.py, CherryPy, Pylons y web2py.

Creo que la multitud favorita de los de arriba es Pilones, pero yo soy un hombre de Django, así que no puedo decir mucho más.

Para obtener más información sobre los frameworks ligeros de Python, consulte this question.

+0

Tal vez Django no es tan grande como pensaba entonces - Pensé que era el equivalente de Rails o CakePHP. –

+0

Diablos, incluí django en algunas aplicaciones que no son web solo por su soporte de bases de datos o plantillas. – FogleBird

8

Hay un par de marcos web disponibles en Python, que le exime de la mayor parte del trabajo

  1. Django
  2. Pylons (y el nuevo TurboGears, basado en él).
  3. Web2py
  4. CherryPy (y el viejo TurboGears, basado en él)

no me siento Django como "grande" como usted dice; sin embargo, creo que Pylons y CherryPy pueden ser una mejor respuesta a su pregunta. CherryPy parece más simple, pero parece también un poco "pasé", mientras que Pylons está en desarrollo activo.
Para Pilones, también hay un interesante Pylons book, disponible en línea.

0

Realmente amo django y no me parece que sea enorme. Es muy poderoso pero no enorme.

Si desea comenzar a jugar con http y python, lo más simple es el BaseHttpServer proporcionado en la biblioteca estándar. ver http://docs.python.org/library/basehttpserver.html para más detalles

0

Estoy de acuerdo con Paolo - Django es bastante pequeña y el camino a seguir - pero si usted no está de acuerdo con eso me gustaría añadir a TurboGears a la lista

+0

Iba a agregar TurboGears pero tengo la impresión de que es tan grande, si no más grande que Django. ¿Cómo verifico algo así? –

0

Si usted está buscando un marco echar un vistazo a esta lista: Python Web Frameworks

Si necesita pequeño script (-s) o una secuencia de comandos de trabajo a tiempo, podría ser el módulo CGI sencillo va a ser suficiente - y CGI Scriptscgi module sí.

Le recomendaría que se apegue a algún marco si desea crear algo más que páginas estáticas y formularios simples. Django es el más popular y el que más me apoya.

0

Lo que es "enorme" es una cuestión de gusto, pero Django es un marco de "pila completa", que incluye todo, desde un ORM, hasta plantillas y muchas cosas. Por lo tanto, no es pequeño (aunque es más pequeño que Grok y Zope3, otros frameworks web de python de pila completa).

Pero también hay muchos marcos web realmente pequeños y minimalistas, que no hacen más que proporcionar un marco para la parte web. Muchos han sido mencionados anteriormente. A la lista debo agregar BFG y Bobo. Ambas cosas son mínimas, pero aún útiles y flexibles.

http://bfg.repoze.org/ http://bobo.digicool.com/

2

En Python, la manera de producir un sitio web es el uso de un marco. La mayoría de los marcos populares (y activamente mantenidos/respaldados) ya han sido mencionados.

En general, no veo Djano o Turbogears como "enormes", los veo como "completos". Cada uno te permitirá construir un sitio web dinámico y respaldado por la base de datos. La preferencia por uno sobre el otro es más sobre el estilo que sobre las características.

Zope por el contrario, se siente "grande". Zope también es una clase "empresarial" en términos de las características que se incluyen de manera inmediata. Una cosa muy buena es que puede usar ZODB (Zope Object Database) sin usar el resto de Zope.

Sin duda ayudaría si supiéramos qué tipo de sitios web le interesa desarrollar, ya que eso podría ayudar a reducir las sugerencias.

2

En web2py el código anterior sería

en el controlador default.py:

def main(): 
    return dict(message="Hello World") 

en vista default/main.html:

<html><head> 
<title>Hello World from Python</title> 
</head><body> 
{{=message}} 
</body></html> 

nada más, sin instalación, sin necesidad de configuración, puede editar el dos archivos arriba directamente en la web a través de la interfaz de administración. web2py está basado en wsgi, pero también funciona con cgi, mod_python, mod_proxy y fastcgi si mod_wsgi no está disponible.

Cuestiones relacionadas