好吧,首先,您需要实际使用dev服务器main.js
,否则浏览器将无法使用它。
通常将所有文件.js
和.css
文件static
放在小型Web应用程序的目录下,因此布局应如下所示:
app.py
- static/
main.js
- views/
index.tpl
绝不需要这种确切的命名和布局,而只是经常使用。
接下来,您应该为静态文件提供处理程序:
from bottle import static_file
# ...
@route('/static/:path#.+#', name='static')
def static(path):
return static_file(path, root='static')
这实际上会将您的文件提供static/
给浏览器。
现在,到最后一件事。您将JavaScript指定为:
<script type="text/javascript" src="js/main.js" charset="utf-8"></script>
这意味着到的路径.js
是 相 对于当前页面的。在你开发服务器,索引页(/
)将寻找.js
在/js/main.js
和另一页(说,/post/12
)将寻找它/post/12/js/main.js
,并且将肯定失败。
相反,您需要使用该get_url
函数正确引用静态文件。您的处理程序应如下所示:
from Bottle import get_url
# ...
@route('/')
@view('index')
def index():
return { 'get_url': get_url }
在中index.tpl
,.js
应引用为:
<script type="text/javascript" src="{{ get_url('static', path='main.js') }}" charset="utf-8"></script>
get_url
用找到一个处理程序name='static'
,并计算到它的正确路径。对于开发服务器,它将始终为/static/
。您甚至可以在模板中对其进行硬编码,但是由于两个原因,我不建议这样做: