Фляжка не служит изображениям

Я создал небольшое приложение 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"> в своем шаблоне.