Фляжка не служит изображениям
Я создал небольшое приложение Flask для обработки и представления данных для моего локального потребления на моей локальной машине. Приложение My Flask обрабатывает данные во вложенной папке, а затем открывает веб-страницу для отображения обработанных данных. Все выглядит великолепно, за исключением того, что изображения не обслуживаются. Например, полученный HTMl-источник будет иметь что-то вроде:
<img src="/Users/username/Desktop/datafolder/pics/pic1.png" alt="pic1">
однако изображения не будет. Пути верны, поэтому я предполагаю, что это связано с тем, как изображения передаются или не передаются в Flask в render_template
. Возможно, есть способ указать медиа-каталог, как я вижу в этом сообщении django?
Любые предложения о том, как я могу включить изображения, будут очень рады.
С наилучшими пожеланиями,
zach cp
Изменить: как указано в ответах и комментариях, все статические файлы должны находиться в указанном статическом каталоге. Мое использование конструкции "file://" заставило браузер дать сообщение об ошибке:
"Not allowed to load local resource: file:///Users/username/Desktop/datafolder/pics/pic1.png"
поэтому я не мог видеть изображение. Я мог бы использовать любое из нижеприведенных решений, которые приводят к изображениям, которые я хотел бы обслуживать в указанной статической папке.
Ответы
Ответ 1
Приложение Flask по умолчанию использует файлы, в которых он пытается обслуживать статические файлы в качестве "статического" пути в корневом каталоге приложения. Таким образом, если вы запустите свою программу в...
C:\Users\username\Desktop\MyApp
статическая папка будет
C:\Users\username\Desktop\MyApp\Static
Таким образом, при попытке обслуживать
/Users/username/Desktop/datafolder/pics/pic1.png
файл Flask будет пытаться обслуживать на самом деле...
C:\Users\username\Desktop\MyApp\Static\Users\username\Desktop\datafolder\pics\pic1.png
Возможно, это неверно.
Поэтому вы можете сделать несколько вещей:
-
Измените файлы, которые обрабатываются в "статической" папке, где выполняется приложение Flask, и сделайте значение src HTML относительно этого каталога
-
Задайте параметр static_folder
в конструкторе Flask. Это позволяет вам установить, где будут использоваться статические файлы.
app = Flask(static_folder='C:\\Some\\Directory')
-
Как было предложено некоторыми комментариями, измените использование файла://type. Если он не работает, то опубликуйте, что вы пытаетесь, потому что он должен работать:)
Ответ 2
Хорошо, вам стоит взглянуть на это: http://flask.pocoo.org/docs/quickstart/#static-files
Что вам нужно сделать:
cd path/to/your/flask/app
mkdir static
mv /Users/username/Desktop/datafolder/pics/pic1.png /static
используйте <img src="/static/pic1.png" alt="pic1">
в своем шаблоне.