2016-06-18 1 views
0

я установить статический путь в настройках словарь, как например:Торнадо: Абсолютный путь статического обработчика

settings = { 
       "static_path": "static", 
       # rest of settings 
      } 

Мне нужно, чтобы получить статический путь в приложении, так что я использую:

self.application.settings["static_path"] 

Однако это не дает абсолютного пути каталога. Есть ли способ получить абсолютный путь к этому каталогу, не используя библиотеку os?

ответ

2

Вы можете использовать classmethod StaticFileHandler.get_absolute_path. Это рекомендуемый способ, так как он используется повсеместно в StaticFileHandler и может быть переопределен для изменения взаимодействия с файловой системой. Тем не менее реализация по умолчанию - всего лишь os.path.abspath.

+0

Спасибо kwarunek Я должен сказать, что я действительно не понимаю этот метод. Он принимает корень и путь и упоминает, что root - это static_path, установленный в настройках. Однако вам все равно придется передать эту переменную. Какой смысл передавать переменную и не иметь ее как необязательную? В настоящее время я использую os.getcwd() –

+0

Этот метод является ** классом **, он не имеет контекста объекта-обработчика, приложения, поэтому он требует «root», на самом деле внутри объекта «StaticFileHandler» проходит этот метод тот же 'application.settings ['static_path']'. – kwarunek

+0

Да, это просто понятно, что это классный подход, это классно! Спасибо друг!! –