2011-07-07 13 views
6

Soy totalmente nuevo en Python y me gustaría empezar a construir páginas web con él (pero no usando un marco web o un módulo de plantillas). ¿Cuáles son los requisitos mínimos? ¿Podría sugerir una configuración simple?Configuración liviana para generar páginas web en Python puro

¡Gracias!

EDITAR: No estoy tratando de ser minimalista a toda costa. Lo que estoy buscando es una solución simple y común, que se mantenga cerca del lenguaje (y no imponga un paradigma de diseño, por ejemplo MVC).

+2

Los requisitos mínimos son Python y un marco web. ;-) – Keith

+0

"... y ejecutar páginas web ..."? ¿Huh? ¿Qué quieres decir con eso? –

+2

@Chris, tal vez signifique verlos con IE;) –

Respuesta

3

Voy con la corriente, y yo recomendaría usar un marco liviano.

Por un lado, las aplicaciones web exponen su servidor a riesgos de seguridad, por lo que es bueno usar algo que es mantenido por una comunidad de desarrolladores más o menos grande (más ojos para arreglar vulnerabilidades).

Además, si desea "permanecer cerca del idioma", necesita algún tipo de capa de abstracción para administrar HTTP en una forma pythonic. Python tiene que ver con la alta nivelación [batería incluida].

Parte del framework se mantiene muy cerca de la sintaxis, la semántica y el estilo de python. Eche un vistazo a webpy por ejemplo. Creo que esta cita dice mucho de la filosofía detrás de webpy:

"Django te permite escribir aplicaciones web en Django TurboGears le permite escribir aplicaciones web en TurboGears Web.py le permite escribir aplicaciones web en Python..." - Adam Atlas

Otro buen candidato en términos de concisión y uso de python "regular" es cherrypy. Desde su sitio web:

CherryPy permite a los desarrolladores crear aplicaciones web de la misma manera que construirían cualquier otro programa Python orientado a objetos. [...] Sus aplicaciones web potenciadas CherryPy son, de hecho, aplicaciones autónomas de Python que integran su propio servidor web de subprocesos múltiples. Puede implementarlos en cualquier lugar donde pueda ejecutar aplicaciones de Python.

3

Si realmente desea hacer esto, el mínimo que necesita es una comprensión de WSGI, que es el pegamento entre Python y el servidor web. Usted puede construir una aplicación web de Python directamente sobre esto.

Pero, al igual que los otros contestadores, realmente lo animo a utilizar un marco. No son todas cosas enormes y monolíticas como Django; ver, por ejemplo, microframeworks como Flask. Ellos se encargarán de las cosas obvias, como enrutar las solicitudes de URL al código correcto.

2

Sólo tiene que ejecutar este comando

$ python -m SimpleHTTPServer 
Serving HTTP on 0.0.0.0 port 8000 ... 

no es mucho más ligero que el

ahora mira CGIHTTPServer.py en la biblioteca de Python para más ideas

4

aplicaciones WSGI limpio, sin un marco de pleno derecho:

from wsgiref.simple_server import make_server 

def application(environ, start_response): 

    # Sorting and stringifying the environment key, value pairs 
    response_body = ['%s: %s' % (key, value) 
        for key, value in sorted(environ.items())] 
    response_body = '\n'.join(response_body) 

    status = '200 OK' 
    response_headers = [('Content-Type', 'text/plain'), 
        ('Content-Length', str(len(response_body)))] 
    start_response(status, response_headers) 

    return [response_body] 

# Instantiate the WSGI server. 
# It will receive the request, pass it to the application 
# and send the application's response to the client 
httpd = make_server(
    'localhost', # The host name. 
    8051, # A port number where to wait for the request. 
    application # Our application object name, in this case a function. 
    ) 

# Wait for a single request, serve it and quit. 
httpd.handle_request() 

continuación, puede utilizar Nginx: http://wiki.nginx.org/NgxWSGIModule

Esta es la más estable, seguro y desnuda configuración a hueso.

Más ejemplos en: https://bitbucket.org/lifeeth/mod_wsgi/src/6975f0ec7eeb/examples/.

Esta es la mejor manera de aprender (como usted pidió). Ya me he ido por este camino.

+0

Gracias Flavius, agradezco su respuesta y la sugerencia de usar nginx. –

Cuestiones relacionadas