2009-04-17 21 views
14

Có cách nào dễ dàng để sử dụng CherryPy như một máy chủ web sẽ hiển thị các tệp .html trong một số thư mục không? Tất cả các tài liệu giới thiệu CherryPy khẳng định rằng nội dung được tạo động:Làm thế nào để sử dụng cherrypy như một máy chủ web cho các tập tin tĩnh?

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

Có cách nào dễ dàng để sử dụng index.html thay vì phương pháp HelloWorld.index()?

Trả lời

31

mã đơn giản này sẽ phân phát các tệp trên thư mục hiện tại.

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

Với CherryPy 3.2, tôi đã phải thay đổi 'cherrypy.quickstart()' thành 'cherrypy.engine.start() 'và' cherrypy.engine.block() 'trước khi nội dung được phục vụ. – technomalogical

+0

Cũng với CherryPy 3.6 bạn phải sử dụng 'cherrypy.engine.start()' và 'cherrypy.engine.block()' –

7

Dưới đây là một số thông tin vào phục vụ nội dung tĩnh với CherryPy: http://docs.cherrypy.org/stable/progguide/files/static.html

BTW, đây là một cách đơn giản để chia sẻ thư mục hiện qua HTTP với python:

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

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

Tôi biết về SimpleHTTPServer, nhưng rất thú vị khi làm điều tương tự với cherrypy. Thật không may, hướng dẫn không nói gì về việc cung cấp bất kỳ tệp .html nào như nội dung tĩnh - chỉ các tệp .css được xác định trước: ( – grigoryvp

+0

Loại tệp nào bạn đang phân phát không nên có kết quả, nó cũng hoạt động với các tệp html. Xem http: // www.cherrypy.org/wiki/StaticContent#Servingfilesthroughthestaticdirtool Một liên kết khác: http://www.nabble.com/How-do-I-serve-up-static-file-pages--td20897705.html – codeape

+1

Liên kết Wiki đã thay đổi 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

nếu bạn có một tệp được gọi là do_contact thì tệp đó sẽ là không thể tải xuống? – nosklo

+0

Đó là từ ví dụ, có vẻ như tôi đã bị lừa dối và đã 'do_contract' cho một số loại phương pháp lọc nội bộ để ghi đè lên :) – grigoryvp

Các vấn đề liên quan