python - 静态文件的路由问题
问题描述
<script type="text/javascript" src="js/main.js"></script>
嗨,当我不完全正确时,似乎无法提供我的静态文件(例如:在我的标题 [部分模板] 中) localhost:4242
:
http://localhost:4242/
: 有效http://localhost:4242/samples
:不起作用,似乎Bottle使用当前位置来连接js/main.js
我的文件以这种方式组织:
/runserver.py
/project/static/js/main.js
我有以下应用程序并static_file
使用:
static.py
from project.libs.bottle import static_file
from runserver import app
# (Agnostic) Static Routes
@app.get('/<filename:path>')
def send_static(filename):
return static_file(filename, root='project/static/')
runserver.py
import os
import sys
from project.libs.bottle import Bottle, run, TEMPLATE_PATH, default_app
app = default_app()
dir_name = os.path.dirname(sys.argv[0])
TEMPLATE_PATH.insert(0, './project/views/layout')
TEMPLATE_PATH.insert(1, './project/views')
import project.routes.static
import project.routes.business
import project.routes.error
if __name__ == '__main__':
run(host="localhost", port=4242, debug=True, reloader=True)
解决方案
的root
路径static_file
应该是绝对路径而不是相对路径,因为工作目录可能与项目目录不同。
return static_file(filename, root='project/static/')
这条路线也匹配所有路径
@app.get('/<filename:path>')
推荐阅读
- reactjs - 包含 useContext 钩子会导致孩子的 useState 重置为初始值
- flutter - Flutter - 如何在灵活宽度的 RaisedButton 上设置文本位置
- python-3.x - 来自视频问题的 CV2 帧
- c - 我已经在 OS Catalina 上安装了 gcc home brew 命令行工具。怎么跑?
- dictionary - 如何在迭代时删除 Google Apps 脚本中特定字典类型的元素
- servlets - 如何在骆驼servlet路由上设置超时
- database - laravel中选择多个表列和别名条件
- python - 我可以删除 Anaconda 根环境中的包吗?
- python - 更换标签 Tkinter
- android - Android E/FragmentManager:未找到 id 0x7f090030 的视图