2012-03-01 32 views
29

Có thể thêm nhiều đường dẫn tĩnh khác cho cá thể Flask địa phương của tôi không? Tôi muốn có thư mục mặc định static để lưu trữ tệp js/css/hình ảnh cho trang web và một thư mục khác, ví dụ: designs để giữ tài sản cụ thể của tôi. Tôi không muốn đặt thư mục designs bên trong static nếu có giải pháp tốt hơn.Nhiều đường dẫn tĩnh trong cá thể Flask cục bộ

Trả lời

31

Tôi đã sử dụng phương pháp sau đây:

# Custom static data 
@app.route('/cdn/<path:filename>') 
def custom_static(filename): 
    return send_from_directory(app.config['CUSTOM_STATIC_PATH'], filename) 

Biến số CUSTOM_STATIC_PATH được xác định trong cấu hình của tôi.

Và trong các mẫu:

{{ url_for('custom_static', filename='foo') }} 

Caveat emptor - Tôi không thực sự chắc chắn cho dù đó là an toàn;)

+5

Trong mắt tôi đây là phiên bản tùy chỉnh nhất nhưng bạn nên sử dụng 'Werkzeug. utils.secure_filename' để kiểm tra tên tệp. – Jarus

+0

làm rõ cho bất kỳ ai đến 'CUSTOM_STATIC_PATH' là tôi tin rằng đường dẫn tên thư mục thực tế. nó không phải là một số khóa/biến đặc biệt .... mà vì lý do nào đó mà tôi nghĩ là vậy. –

+0

Điều này làm việc như một say mê, cảm ơn! –

26

Bạn có thể sử dụng một Blueprint với dir của riêng tĩnh http://flask.pocoo.org/docs/blueprints/

Blueprint

blueprint = Blueprint('site', __name__, static_url_path='/static/site', static_folder='path/to/files') 
app.register_blueprint(blueprint) 

Template

{{ url_for('site.static', filename='filename') }} 
Các vấn đề liên quan