如何将cherrypy用作静态文件的Web服务器?

时间:2009-04-17 08:54:26

标签: python cherrypy

使用CherryPy作为在某个文件夹中显示.html个文件的Web服务器是否容易?所有CherryPy介绍文档都指出内容是动态生成的:

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

使用index.html代替HelloWorld.index()方法是否容易?

4 个答案:

答案 0 :(得分:33)

这个简单的代码将提供当前目录中的文件。

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()

答案 1 :(得分:7)

以下是有关使用CherryPy提供静态内容的一些信息:http://docs.cherrypy.org/stable/progguide/files/static.html

BTW,这是一种通过HTTP与python共享当前目录的简单方法:

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

# Python 2
$ python -m SimpleHTTPServer [port]

答案 2 :(得分:0)

# 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 )

答案 3 :(得分:0)

我发布此新答案是因为已接受答案的解决方案已过时。 这个简单的代码将在当前目录中提供文件。

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.engine.start()
cherrypy.engine.block()

当然,这只是对已经发布的内容的总结。