Beginner Bottle и статические файлы вопрос - PullRequest
1 голос
/ 06 апреля 2019

После использования модуля Python http.server я сейчас пытаюсь преобразовать все в бутылку и даже не могу начать.Моя проблема заключается в поиске статических файлов - все, что я пробовал, приводит к ошибке «404».Поэтому я попытался свести все к простейшему возможному примеру.Мой каталог верхнего уровня находится в "/ home / dave / test" и в нем находится один файл (test.py) и подкаталог ("/ home / dave / test / static"), содержащий один файл "index.html".».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», я получу сообщение «Ошибка: 404 не найдено» и окно терминала, гдеЯ запускаю скрипт, который выглядит следующим образом:

$ ./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)?

Спасибо, Дейв

1 Ответ

0 голосов
/ 07 апреля 2019

Мне удалось связаться с автором бутылки, и он ответил:

маршрут совпадает с частью пути URL-адреса HTTP-запроса. В вашем Например, '/ static /' будет соответствовать запросам http://localhost:8080/static/index.html и подайте файл index.html из каталога / home / dave / test / static. "http://localhost:8080/index.html" не соответствует маршруту, который вы указано, таким образом, ошибка 404.

Я попробовал это, и это действительно решило проблему.

...