2009-04-17 10 views
14

¿Es una forma fácil de usar CherryPy como un servidor web que mostrará archivos .html en alguna carpeta? Todo CherryPy documentación introductoria afirma que el contenido se genera de forma dinámica:¿Cómo usar cherrypy como servidor web para archivos estáticos?

import cherrypy 
class HelloWorld(object): 
    def index(self): 
     return "Hello World!" 
    index.exposed = True 
cherrypy.quickstart(HelloWorld()) 

¿Es alguna forma fácil de usar en lugar del método index.html HelloWorld.index()?

Respuesta

31

Este código simple servirá archivos en el directorio actual.

import os 
import cherrypy 

PATH = os.path.abspath(os.path.dirname(__file__)) 
class Root(object): pass 

cherrypy.tree.mount(Root(), '/', config={ 
     '/': { 
       'tools.staticdir.on': True, 
       'tools.staticdir.dir': PATH, 
       'tools.staticdir.index': 'index.html', 
      }, 
    }) 

cherrypy.quickstart() 
+8

Con CherryPy 3.2, tuve que cambiar 'cherrypy.quickstart()' a 'cherrypy.engine.start() 'y' cherrypy.engine.block() 'antes de que se sirva el contenido. – technomalogical

+0

También con CherryPy 3.6 tienes que usar 'cherrypy.engine.start()' y 'cherrypy.engine.block()' –

7

Aquí hay alguna información sobre servir contenido estático con CherryPy: http://docs.cherrypy.org/stable/progguide/files/static.html

Por cierto, aquí es una forma sencilla de compartir el directorio actual a través de HTTP con el pitón:

 
# Python 3 
$ python -m http.server [port] 

# Python 2 
$ python -m SimpleHTTPServer [port] 
+0

Sé acerca de SimpleHTTPServer, pero es muy interesante hacer lo mismo con cherrypy. Desafortunadamente, el tutorial no dice nada acerca de servir cualquier archivo .html como contenido estático, solo archivos .css predefinidos :( – grigoryvp

+0

El tipo de archivos que está sirviendo no debería tener consecuencias, también debería funcionar con archivos html. Consulte http: // www.cherrypy.org/wiki/StaticContent#Servingfilesthroughthestaticdirtool. Otro enlace: http://www.nabble.com/How-do-I-serve-up-static-file-pages--td20897705.html – codeape

+1

El enlace Wiki ha cambiado a http://docs.cherrypy.org/stable/progguide/files/static.html –

-1
# encode: utf-8 

import cherrypy 
WEB_ROOT = "c:\\webserver\\root\\" 

class CServer(object) : 
    @cherrypy.expose 
    def do_contact(self, **params): 
     pass 

cherrypy.server.socket_port = 80 
# INADDR_ANY: listen on all interfaces 
cherrypy.server.socket_host = '0.0.0.0' 
conf = { '/': 
    { 'tools.staticdir.on' : True, 
    'tools.staticdir.dir' : WEB_ROOT, 
    'tools.staticdir.index' : 'index.html' } } 
cherrypy.quickstart(CServer(), config = conf) 
+0

¿Qué pasa si tienes un archivo llamado do_contact? Ese archivo será imposible de descargar? – nosklo

+0

Eso fue por ejemplo, parece que estaba mal escrita y tomé 'do_contract' para algún tipo de método de filtro interno para anular :) – grigoryvp

Cuestiones relacionadas