Flask
это такой микро веб-фреймворк на Python.
Его задача генерировать контент а не
обслуживать HTTP доступ к статичным файлам
типа CSS/JavaScript/картинки. Однако, бывают
случаи, как у меня, например, в Картобонус
ака Cartobonus,
когда приложение на Flask это лишь часть,
подсистема веб-решения. В этом случае
веб-страницы на Flask используют
CSS/JavaScript из внешних по отношению к
аппликухе папок. Ну и какие проблемы?
Проблема вылезает при отладке
Flask-приложения, когда используется его
собственный HTTP сервер, который ничего
не знает про внешние папки с файлами.
Если без CSS еще можно жить, то без
JavaScript уже невозможно.
Итак, как
научить Flask отдавать статику из любой
папки
@app.route('/cartobonus/<path:path>') def sendStatic(path): pth = os.path.abspath(os.path.join(app.root_path, "..", path)) return send_from_directory(os.path.dirname(pth), os.path.basename(pth))
В данном случае, корень /cartobonus/ ведет в
папку c:\Inetpub\wwwroot\Apps\app5\
где в подпапках
лежат всякие компоненты.
Фласк приложение
сидит в файле
c:\Inetpub\wwwroot\Apps\app5\wsgi\servlets_controller.py
посему переменная
app.root_path ведет в папку
c:\Inetpub\wwwroot\Apps\app5\wsgi\
Об остальном
несложно догадаться.
Получается
вполне удобно. При отладке используется
отдача статики Flask, в продакшене этот
метод никогда не работает. Для особой
безопасности можно добавить проверку
типа
if __name__ == '__main__': отправлять статику
Источник знания
Ой, чуть не забыл, фигня эта ваша Editra. Подсветки совпадений нет, автодополнение кривое, фактически не работает. Кодировка вывода в консоль не регулируется.
original post http://vasnake.blogspot.com/2013/02/flask-and-static-files.html
Комментариев нет:
Отправить комментарий