我正在使用bower来获取我网站的.css和.js文件。
目录结构如下所示:
server.py bower_components / 模板/
所有HTML模板(以及我与AngularJS一起使用的部分模板)都位于模板中。由凉亭安装的东西位于bower_components中。如何定义template_path,static_path和static_url_prefix设置,以便链接到这些目录中的文件?
如果我使用相对路径,如:
HREF = “bower_components /引导/ DIST / CSS / bootstrap.css”
我会收到404错误。找不到处理程序,因此会抛出错误。似乎Tornado强迫我在我的模板上使用static_url函数?我真的必须使用它吗?当与AngularJS混合时,它看起来非常难看。我已经尝试将static_path设置为os.path.dirname( file )并尝试使用static_url,但这给了我异常:
异常:您必须在应用程序中定义'static_path'设置才能使用static_url
我该如何配置?我不敢相信我已经浪费了几个小时试图解决这个问题...... :(
答案 0 :(得分:2)
您是否尝试使用StaticFileHandler?你可以使用这样的东西:
import os
import tornado.web
import tornado.ioloop
if __name__ == '__main__':
app = tornado.web.Application([
(r"/(.*)", tornado.web.StaticFileHandler, {"path": os.path.dirname(os.path.abspath(__file__))}),
])
app.listen(8888)
tornado.ioloop.IOLoop.instance().start()
答案 1 :(得分:1)
您必须将staticfilehandler与放在settings变量中的某些路径变量结合使用。 http://tornado.readthedocs.org/en/latest/web.html 这很容易。您可以根据需要命名尽可能多的设置变量。
答案 2 :(得分:0)
事实证明我需要使用tornado.web.StaticFileHandler类并将路径映射到它。这就是我配置tornado.web.Application:
的方式class TornadoApp(tornado.web.Application):
def __init__(self):
# static file regex patterns matched with the actual folders here
static_handlers = {
'/bower_components/(.*)': 'bower_components',
'/templates/partials/(.*)': 'templates/partials'
}
handlers = [
('/', IndexHandler),
('/products', ProductHandler),
]
# append the handlers with content from static_handlers dictionary
for r, p in static_handlers.items():
handlers.append((r, tornado.web.StaticFileHandler, {'path': p}))
settings = {
'template_path': "templates",
'debug': True
}
tornado.web.Application.__init__(self, handlers, **settings)