我试图破解tornado embedded app example以添加自定义css和js。我似乎无法正确地将css和js联系起来。我应该期望css和js文件在文档头中正常链接吗?
<head>
<link href="/static/css/custom.css" rel="stylesheet" type="text/css">
<script src="/static/js/custom.js"></script>
</head>
...或者我应该先使用bokeh custom static handler加载所有内容吗?
...或者我可以将它传递给indexhandler类似的那样:
class IndexHandler(RequestHandler):
def get(self):
template = env.get_template('embed.html')
static = env.get_static('/css/style.css')
script = server_document('default')
self.write(template.render(script=script, template="Tornado", static=static))
供参考:
app
|__data
|__static
| |__css
| |__custom.css
| |__js
| |__custom.js
|__templates
| |__embed.html
|__main.py
只是寻找一些一般指导。感谢。
答案 0 :(得分:1)
bigreddot的回答是正确的,但我想补充一些细节。就我而言,我想访问/static/css
的内容。您将需要以下内容:
from tornado.web import StaticFileHandler
import os.path as op
,然后在打开服务器时添加以下应用程序处理程序:
[(r'/static/css/(.*)', StaticFileHandler,
{'path': op.normpath(op.dirname(op.abspath(__file__)) + r'/static/css')})]
这与其他任何应用程序处理程序一起传递给extra_patterns
参数。
答案 1 :(得分:0)
在调用extra_patterns
时,您会向Server
添加类似内容:
(server_static_route, StaticFileHandler, { "path" : local_path_to_static_dir })
其中StaticFileHandler
来自tornado.web
。