Я выполнил инструкции из " Как обслуживать статические файлы в 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 считает, что статическая папка должна быть там.
Я все еще пытаюсь понять, что делать.