我正在尝试编写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()
提前致谢!
答案 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
。这将使其更加灵活,并且还可以利用服务器端缓存等。