2013-04-08 27 views
10

Tôi đang cố gắng phân phát tệp tĩnh bằng bình. Tôi không biết cách sử dụng hàm url_for. Tất cả các tuyến đường của tôi tạo ra nội dung động đang làm việc tốt, tôi đã nhập url_for, nhưng khi tôi có mã này:bình python - phục vụ các tệp tĩnh

@app.route('/') 
def home(): 
    return url_for('static', filename='hi.html') 

Cùng với tập tin của tôi 'hi.html' (trong đó có một số html cơ bản trong nó) ngồi trong thư mục tĩnh, những gì tôi nhận được khi tôi tải trang là nghĩa đen này:

/static/hi.html

tôi chỉ sử dụng url_for sai?

Trả lời

16

url_for chỉ trả về, chính xác, URL cho tệp đó. Có vẻ như bạn muốn redirect đến URL cho tệp đó. Thay vào đó, bạn chỉ gửi văn bản của URL cho máy khách dưới dạng phản hồi.

from flask import url_for, redirect 

@app.route('/') 
def home(): 
    return redirect(url_for('static', filename='hi.html')) 
+0

Tất nhiên. Tôi là một thằng ngốc. Bạn thật thông minh. Cảm ơn bạn. – user1276273

+11

Không có kẻ ngốc nào ở đây, chỉ những người chưa biết. Lời khuyên của sberry về việc cung cấp các tệp tĩnh cũng thích hợp. –

6

Bạn đang nhận được kết quả chính xác cho những gì bạn đang làm. url_for tạo địa chỉ cho các đối số bạn cung cấp. Trong trường hợp của bạn, bạn đang tạo địa chỉ cho tệp hi.html trong thư mục static. Nếu bạn muốn thực sự đầu ra tập tin, bạn sẽ muốn

from flask import render_template, url_for 

... 

    return render_template(url_for("static", filename="hi.html")) 

Nhưng vào thời điểm này, mục tĩnh của bạn sẽ cần phải có trong thư mục templates (nơi từng được cấu hình để sống).

Nếu bạn định phục vụ các tệp html tĩnh như thế này, thì đề xuất của tôi là phân phối chúng bên ngoài ứng dụng bình bằng cách định tuyến lưu lượng truy cập đến /static/.* trực tiếp từ máy chủ web của bạn. Có rất nhiều ví dụ trên web để thực hiện việc này bằng nginx hoặc apache.

+0

Cảm ơn - Tôi có ý định phục vụ chúng trực tiếp từ máy chủ web của tôi, chỉ trong khi tôi đang phát triển tôi muốn có thể phục vụ chúng bằng bình, và nhiều hơn bất cứ thứ gì khiến tôi phát điên. – user1276273

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