Нет, Flask не обслуживает произвольные файлы из файловой системы.Переместите любые статические файлы, подобные этим, в подкаталог static
, а затем ссылайтесь на них по этому пути;Вы можете использовать полный путь вложенных каталогов в пределах пути static
:
<img src="/static/shards-logo-white.svg" alt="Example Navbar 1" class="mr-2" height="30">
<script src="/static/html/js/shards.min.js"></script>
<script src="/static/html/js/demo.min.js"></script>
Вы могли бы обслуживать ваш HTML , визуализированный из шаблона , после чеговы можете использовать {{ url_for('static', filename="shards-logo-white.svg") }}
и {{ url_for('static', filename="html/js/shards.min.js") }}
и т. д., чтобы Flask генерировал действительные URL-адреса для этих путей.
См. раздел Статические файлы быстрого запуска ,а также глава Static Files учебного пособия .
Если вы не используете шаблон, то можете также использовать файл html/index.html
в качестве статического файла.тоже.В его нынешнем виде вы не отображаете его как шаблон и не вносите никаких других изменений во время выполнения в содержимое файла.
Даже если вам иногда требуется условно передать файл с диска, а не прочитать его все впамяти я бы использовал функцию flask.send_file()
, чтобы обеспечить эффективное обслуживание файла и разумный заголовок типа содержимого:
from flask import send_file
@app.route('/')
def hello():
return send_file('html/index.html')
Относительные пути разрешаются по отношению к Flask.root_path
.Возможно, вы также захотите рассмотреть flask.send_from_directory()
, который гарантирует, что пользовательский ввод имени файла не может быть использован для обслуживания произвольных файлов за пределами указанного каталога.