Ответ 1
Флажок устанавливает маршрут для статических файлов, используя ваш статический путь (по умолчанию - /static
) и любой текст. Из источника :
self.add_url_rule(self.static_url_path + '/<path:filename>',
endpoint='static',
view_func=self.send_static_file)
send_to_static
передает все, что этот маршрут назначает filename
.
return send_from_directory(self.static_folder, filename,
cache_timeout=cache_timeout)
Если вы посмотрите источник для send_from_directory
, вы увидите, что он просто использует safe_join(directory, filename)
для получения пути к файлу.
safe_join
сам выполняет некоторую работу по нормализации пути и следит за такими вещами, как ..
в имени файла.
Возвращаясь к URL-адресу, path
соответствует любому тексту. Это похоже на string
, за исключением того, что он принимает косые черты. Это означает, что вы можете использовать любой уровень вложенности в вашей статической папке. URL-адреса, такие как /static/file.txt
и /static/p/a/t/h/t/o/file.txt
, будут работать. Пока URL-адреса начинаются со статического пути, поведение, которое вы хотите, работает из коробки:
http://localhost:5000/static/css/images/image1.png