gpt4 book ai didi

python - 有没有更好的方法来使用 Tornado 处理 index.html?

转载 作者:IT老高 更新时间:2023-10-28 21:15:19 25 4
gpt4 key购买 nike


我想知道是否有更好的方法来使用 Tornado 处理我的 index.html 文件。

我对所有请求都使用 StaticFileHandler,并使用特定的 MainHandler 来处理我的主要请求。如果我只使用 StaticFileHandler 我得到一个 403: Forbidden 错误

GET http://localhost:9000/
WARNING:root:403 GET / (127.0.0.1): is not a file

我现在的情况:

import os
import tornado.ioloop
import tornado.web
from tornado import web

__author__ = 'gvincent'

root = os.path.dirname(__file__)
port = 9999

class MainHandler(tornado.web.RequestHandler):
def get(self):
try:
with open(os.path.join(root, 'index.html')) as f:
self.write(f.read())
except IOError as e:
self.write("404: Not Found")

application = tornado.web.Application([
(r"/", MainHandler),
(r"/(.*)", web.StaticFileHandler, dict(path=root)),
])

if __name__ == '__main__':
application.listen(port)
tornado.ioloop.IOLoop.instance().start()

最佳答案

原来 Tornado 的 StaticFileHandler 已经包含 默认文件名 功能。

Tornado 版本 1.2.0 中添加了以下功能: https://github.com/tornadoweb/tornado/commit/638a151d96d681d3bdd6ba5ce5dcf2bd1447959c

要指定默认文件名,您需要将“default_filename”参数设置为 WebStaticFileHandler 初始化的一部分。

更新您的示例:

import os
import tornado.ioloop
import tornado.web

root = os.path.dirname(__file__)
port = 9999

application = tornado.web.Application([
(r"/(.*)", tornado.web.StaticFileHandler, {"path": root, "default_filename": "index.html"})
])

if __name__ == '__main__':
application.listen(port)
tornado.ioloop.IOLoop.instance().start()

这处理根请求:

  • / -> /index.html

子目录请求:

  • /tests/ -> /tests/index.html

并且似乎可以正确处理目录的重定向,这很好:

  • /tests -> /tests/index.html

关于python - 有没有更好的方法来使用 Tornado 处理 index.html?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com