Jam*_*lor 7 python webserver tornado
我正在尝试使用Python中的Tornado API从静态目录中提供页面.这个答案类似于我想要做的,但我似乎无法让它发挥作用.
我的目录结构如下所示(所有静态文件都在一个名为的文件夹中web
):
我有一个像这样的网络服务器设置:
class Application(tornado.web.Application):
def __init__(self):
handlers = [
(r'/ws', WSHandler),
(r'/', IndexHandler),
]
settings = {
"debug": True,
"static_path": os.path.join(os.path.dirname(__file__), "web")
}
tornado.web.Application.__init__(self, handlers, **settings)
http_server = tornado.httpserver.HTTPServer(Application())
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
我想这一行:
"static_path": os.path.join(os.path.dirname(__file__), "web")
Run Code Online (Sandbox Code Playgroud)
可能已经修复了问题,但当我指向该index.html
文件时:
class IndexHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
self.render('web/index.html')
Run Code Online (Sandbox Code Playgroud)
它按预期提供页面,但将此错误消息输出到控制台:
WARNING:tornado.access:404 GET /css/reset.css (::1) 3.57ms
WARNING:tornado.access:404 GET /js/lib/custom-marker.js (::1) 0.96ms
WARNING:tornado.access:404 GET /js/map.js (::1) 2.08ms
WARNING:tornado.access:404 GET /js/websocket-client.js (::1) 1.56ms
WARNING:tornado.access:404 GET /css/index.css (::1) 0.89ms
Run Code Online (Sandbox Code Playgroud)
在这个简约的例子中,我该如何解决我的问题?它在哪里指向并且无法找到文件?
您将提供的任何帮助将不胜感激!
根据静态文件和主动文件缓存的文档部分,在“css”和“js”网址前加上“web”应该可以解决您的问题。例如:
/css/reset.css
应该 /web/css/reset.css
或者只使用static_url
模板中推荐的(如果您正在使用它们):
{{ static_url("css/reset.css") }}
Run Code Online (Sandbox Code Playgroud)
或者,您可以在静态目录中指定通配符以在初始化应用程序时呈现指定目录中的所有文件
app = web.Application([
(r'/', IndexHandler),
(r'/js/(.*)', web.StaticFileHandler, {'path': './static/js'}),
(r'/css/(.*)', web.StaticFileHandler, {'path': './static/css'}),
(r'/images/(.*)', web.StaticFileHandler, {'path': './static/images'}),
])
Run Code Online (Sandbox Code Playgroud)
上面的代码将相应地映射所有静态 URL,
<script src="js/jquery-1.10.1.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
将被映射到/static/js
目录,
(r'/js/(.*)', web.StaticFileHandler, {'path': './static/js'})
Run Code Online (Sandbox Code Playgroud)
所以,所有的 css 和图像到它们各自的映射器,
(r'/css/(.*)', web.StaticFileHandler, {'path': './static/css'}),
(r'/images/(.*)', web.StaticFileHandler, {'path': './static/images'}),
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14508 次 |
最近记录: |