【小白求助!!!】树莓派zero w 用bottle做网页服务器

fast 40cm2021-08-231539 次点击
我装的是命令行的系统,然后想用python的bottle框架加ngrok穿透在树莓派上做个网页服务器,需要的文件我都穿上去了但就是bottle里边怎么放进去网页文件我就傻了,搜了不少资料但还没看懂,就希望有个大佬能给讲讲那些css,js,img,html这几个文件怎么放进去,路径怎么写 🤞
收藏 ♥ 感谢
Spoony 小组长 2021-08-24 
https://www.osgeo.cn/bottle/tutorial.html

静态文件映射
Bottle不会处理像图片或CSS文件的静态文件请求。你需要给静态文件提供一个route,一个回调函数(用于查找和控制静态文件的访问)。

from bottle import static_file
@route('/static/<filename>')
def server_static(filename):
return static_file(filename, root='/path/to/your/static/files')
static_file() 函数用于响应静态文件的请求。 (详见 静态文件 )这个例子只能响应在 /path/to/your/static/files 目录下的文件请求,因为 <filename> 这样的通配符定义不能匹配一个路径(路径中包含"/")。 为了响应子目录下的文件请求,我们需要更改 path 过滤器的定义:

@route('/static/<filepath:path>')
def server_static(filepath):
return static_file(filepath, root='/path/to/your/static/files')
使用 root='./static/files' 这样的相对路径的时候,请注意当前工作目录 (./) 不一定是项目文件夹。
fast 40cm 2021-08-24 
https://ppmm.org/image/Xdnj
我就是不太明白那些路径怎么写 我这这样弄了还是不对 访问ip就404 能和我说一说怎么弄吗
九年吃菜粥 38.85m 2021-08-24 
为什么不用 flask?
Spoony 小组长 2021-08-24 
@fast 文件路径不对
/path/to/your/static/files
这里是相对于根目录的位置
RaspiSQH 120.8m 2021-08-24 
@fast 你这些路径是绝对路径,应该去掉第一个/
九年吃菜粥 38.85m 2021-08-24  ♥ 1
bottle-test/
├── main.py
├── static
│   ├── css
│   │   └── main.css
│   ├── img
│   │   └── aaa.png
│   └── js
└── templates
└── index.html




from bottle import route, run, template, Bottle, abort, static_file
import pathlib

app = Bottle()

BASE_PATH = pathlib.Path(__file__).cwd().absolute().as_posix()
TEMPLATES_FOLDER = "templates"
TEMPLATES_PATH = BASE_PATH + '/' + TEMPLATES_FOLDER
STATIC_FOLDER = "static"
STATIC_PATH = BASE_PATH + '/' + STATIC_FOLDER


@app.route('/')
@app.route('/page/<path:path>')
def index(path):
if not path:
path = "index.html"
path = pathlib.Path(TEMPLATES_PATH + "/" + path)
if path.exists():
file = open(path.absolute(), "r")
data = file.read()
file.close()
return template(data)
abort(404, "No such path.")


@app.route('/static/<path:path>')
def static(path):
if not path:
abort(404, "No such path.")
path_tmp = pathlib.Path(STATIC_PATH + "/" + path)
if path_tmp.exists():
return static_file(path, root=STATIC_PATH)
abort(404, "No such path.")


if __name__ == "__main__":
run(app, host="127.0.0.1", port="12344")

这个框架有一说一,分钟级启动,有点烂
RaspiSQH 120.8m 2021-08-24  ♥ 1
@九年吃菜粥 实名推荐web.py,一个很简单的模块,做小东西很有用
九年吃菜粥 38.85m 2021-08-24 
@RaspiSQH 要轻量有 flask,追求性能用 fastapi或tornado,大而全用 django,这才是业界主流,其他的都只能算是玩具,python 的轻量化框架基本上都是模仿 flask
RaspiSQH 120.8m 2021-08-24 
@九年吃菜粥 就是玩玩而已
fast 40cm 2021-08-24 
@九年吃菜粥 能加个好友吗 弄了一晚上了还是没弄明白😂
相逢已是初识 157.05m 2021-08-28 
🆒

登录注册 后可回复。




› 相关内容关注微信公众号