Я выполнил инструкции из " Как обслуживать статические файлы в Flask", но все равно не мог заставить его работать.
Здесь моя структура проекта:
Project_path
|
+--app
| |
| +--main.py
+--static
|
+--js
|
+--jquery-1.11.2.min.js
Здесь main.py
:
@app.route('/js/<path:path>')
def serve_static(path):
root_dir = os.path.dirname(os.getcwd())
print(os.path.join(root_dir, 'static', 'js', path))
return app.send_static_file(os.path.join(root_dir, 'static', 'js', path))
Здесь index.html
:
...
<script type="text/javascript" src="/js/jquery-1.11.2.min.js"></script>
...
И когда я нахожусь в /
, я вижу правильный путь к файлу javascript, напечатанному на экране
который является Project_path/static/js/jquery-1.11.2.min.js
.
Но все же я получил
127.0.0.1 - - [22/Dec/2014 11:26:30] "GET /js/jquery-1.11.2.min.js HTTP/1.1" 404 -
Любая помощь приветствуется.
РЕДАКТИРОВАТЬ
После send_static_file
метода send_static_file
я узнаю, что происходит. В принципе, я не должен использовать abspath как аргумент, флэшка имеет суждение в send_static_file
:
if os.path.isabs(filename) or \
filename == '..' or \
filename.startswith('../'):
raise NotFound()
И так как filename
я перешел, является абспутом, фляжка поднимает NotFound()
.
Кажется, что он должен быть передан в относительный путь к self.static_folder
(self <Flask 'main'>
), который в моем проекте является Project_name/app/static
. Тем не менее, я не ставил static_folder
сам, что означает, что static_folder
считает, что статическая папка должна быть там.
Я все еще пытаюсь понять, что делать.