使用Python http.server模块后,我现在尝试将所有内容转换为Bottle,甚至无法入门。我的问题是查找静态文件-我尝试的所有操作均导致“ 404”错误。因此,我尝试将所有内容简化为最简单的示例。我的顶级目录位于“ / home / dave / test”中,该目录下是一个文件(test.py),以及一个包含单个文件“ index.html”的子目录(“ / home / dave / test / static”) ”。 html文件非常基本:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bottle Test</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>Hello, World</h1>
</body>
</html>
如果我双击文件本身,它将打开一个新的浏览器页面并显示“ Hello,World”消息。 test.py文件是:
#!/usr/bin/env python3
from bottle import route, run, static_file
@route('/static/<filename>')
def server_static(filename):
return static_file(filename, root='/home/dave/test/static')
run(host='localhost', port=8080, debug=True)
如果打开浏览器窗口并输入“ localhost:8080 / index.html”,则会返回“ Error:404 Not Found”消息,并且运行脚本的终端窗口如下:
$ ./test.py
Bottle v0.12.16 server starting up (using WSGIRefServer())...
Listening on http://localhost:8080/
Hit Ctrl-C to quit.
127.0.0.1 - - [06/Apr/2019 15:31:25] "GET /index.html HTTP/1.1" 404 740
我尝试了URL和根参数的各种排列,但是没有尝试过。显然,我在这里缺少一些非常基本的东西。有人可以告诉我上述文件(或URL)中有什么问题吗?
谢谢, 戴夫
答案 0 :(得分:0)
我能够联系Bottle的作者,他回答:
路由与HTTP请求URL的路径部分匹配。在你的 例如,“ / static /”将请求与 http://localhost:8080/static/index.html并投放“ index.html”文件 从“ / home / dave / test / static”目录中。 “ http://localhost:8080/index.html”与您的路线不匹配 指定,因此出现404错误。
我尝试了一下,确实确实解决了问题。