2013-05-03 8 views
51

W jaki sposób używasz url_for w Flask, aby odnieść się do pliku w folderze? Na przykład mam kilka plików statycznych w folderze static, z których niektóre mogą znajdować się w podfolderach, takich jak static/bootstrap.Odsyłacze do plików statycznych z kolbą do url_for

Gdy próbuję wyświetlić plik z numeru static/bootstrap, pojawia się błąd.

<link rel=stylesheet type=text/css href="{{ url_for('static/bootstrap', filename='bootstrap.min.css') }}"> 

Mogę odwołać się do plików, które nie są w podfolderach z tym, który działa.

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='bootstrap.min.css') }}"> 

Jaki jest prawidłowy sposób odniesienia do plików statycznych z url_for? Jak używać url_for do generowania adresów URL do plików statycznych na dowolnym poziomie?

Odpowiedz

105

Domyślnie masz static endpoint dla plików statycznych. Również aplikacja Flask ma następujące argumenty:

static_url_path: można użyć do określenia innej ścieżki dla plików statycznych w Internecie. Domyślna nazwa folderu static_folder.

static_folder: folder zawierający pliki statyczne, które powinny być wyświetlane pod numerem static_url_path. Domyślnie jest to folder "statyczny" w ścieżce głównej aplikacji.

Oznacza to, że filename argumentem odbędzie względną ścieżkę do pliku w static_folder i przekonwertować go na ścieżkę względną w połączeniu z static_url_default:

url_for('static', filename='path/to/file') 

przekonwertuje ścieżkę od static_folder/path/to/file do ścieżki url static_url_default/path/to/file .

Więc jeśli chcesz uzyskać pliki z folderu static/bootstrap użyć tego kodu:

<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='bootstrap/bootstrap.min.css') }}"> 

który zostanie przekształcony (przy ustawieniach domyślnych):

<link rel="stylesheet" type="text/css" href="static/bootstrap/bootstrap.min.css"> 

również spojrzeć url_for documentation.

Powiązane problemy