2013-05-03 31 views
51

Bạn sử dụng url_for trong Flask để tham chiếu tệp trong thư mục như thế nào? Ví dụ: tôi có một số tệp tĩnh trong thư mục static, một số có thể nằm trong thư mục con như static/bootstrap.Liên kết đến Flask các tệp tĩnh với url_for

Khi tôi cố gắng phân phát tệp từ static/bootstrap, tôi gặp lỗi.

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

Tôi có thể tham chiếu các tệp không nằm trong thư mục con với tính năng này, hoạt động.

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

Cách chính xác để tham chiếu các tệp tĩnh với url_for là gì? Làm cách nào để sử dụng url_for để tạo các url đến các tệp tĩnh ở mọi cấp độ?

Trả lời

105

Bạn có theo mặc định static endpoint cho các tệp tĩnh. Ứng dụng Flask có các đối số sau:

static_url_path: có thể được sử dụng để chỉ định đường dẫn khác cho các tệp tĩnh trên web. Mặc định là tên của thư mục static_folder.

static_folder: thư mục có tệp tĩnh sẽ được phân phối tại static_url_path. Mặc định là thư mục 'tĩnh' trong đường dẫn gốc của ứng dụng.

Nó có nghĩa là đối số filename sẽ mất một đường dẫn tương đối đến tập tin của bạn trong static_folder và chuyển nó sang một đường dẫn tương đối kết hợp với static_url_default:

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

sẽ chuyển đổi các đường dẫn tập tin từ static_folder/path/to/file đến đường dẫn url static_url_default/path/to/file .

Vì vậy, nếu bạn muốn nhận file từ thư mục static/bootstrap bạn sử dụng đoạn mã này:

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

Mà sẽ được chuyển đổi sang (sử dụng các thiết lập mặc định):

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

Ngoài ra nhìn vào url_for documentation.

Các vấn đề liên quan