从龙卷风web服务器提供index.html

时间:2017-01-15 19:52:44

标签: python rest tornado

我正在尝试编写Web应用程序并使用Tornado Web进行json xhr调用。但是我试图提供一个静态index.html来为主应用程序提供服务。 我如何提供一个简单的页面,并且仍然有我的应用程序的其余部分的请求处理程序?

这是我到目前为止所尝试的内容:

import tornado.ioloop
import tornado.web
import json
import os

games = [...]

class HomeHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('index.html')

class MatchHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(json.dumps(games))

path = os.path.join(os.getcwd(), 'app')
if __name__ == "__main__":
    application = tornado.web.Application(
        [
            (r'/', HomeHandler),
            (r'/games', MatchHandler),
            (r'/*.*', tornado.web.StaticFileHandler, {'path': path})
        ],
        template_path=os.path.join(os.path.dirname(__file__), 'app')
    )
    application.listen(16001)
    tornado.ioloop.IOLoop.current().start()

提前致谢!

3 个答案:

答案 0 :(得分:1)

您的代码对我来说是正确的。当您运行应用程序时,将名为“index.html”的文件放在当前工作目录的“app”子目录中,当您访问http://localhost:16001/时,该“index.html”的内容将成为响应

答案 1 :(得分:1)

StaticFileHandler正则表达式需要A)包含一个捕获组,B)使用正则表达式语法而不是glob语法:

(r'/(.*\..*)', tornado.web.StaticFileHandler, {'path': path})

这将匹配包含点的任何路径并将其发送到StaticFileHandler。

答案 2 :(得分:0)

你的代码应该可以正常工作,就像@ a-jesse-jiryu-davis一样。要扩展它,如果您只需要提供静态文件,可以使用tornado.web.StaticFileHandler。这将使其更加灵活,并且还可以利用服务器端缓存等。