2013-06-20 34 views
8

Câu hỏi mới.Tập tin hình ảnh Python jinja không tìm thấy

Tôi đang sử dụng Flask, một webframe cho Python. Flask sử dụng Jinja để render mẫu. Tôi không biết phiên bản nào của Jinja Flask sử dụng, tôi cũng không biết cách lấy phiên bản Jinja hoặc phiên bản Flask. Tôi sử dụng Python phiên bản 2.7.

Mẫu chứa hình ảnh trong thư mục css/image. Hình ảnh này hiển thị khi xem mẫu dưới dạng tệp trực tiếp trong trình duyệt Firefox.

Nhưng không phải khi thực hiện Flask:

from flask import Flask, render_template 
app = Flask(__name__) 

@app.route('/hello/') 
@app.route('/hello/<name>') 
def hello(name=None): 
    return render_template('Basic.html', name=name) 

if __name__ == '__main__': 
    app.debug = True 
    app.run() 

Nội dung của tập tin HTML:

<!DOCTYPE HTML> 
<html> 
    <body> 

     <!-- variable example begin --> 
     {% if name %} 
     <h1>Hello {{ name }}!</h1> 
     {% else %} 
     <h1>Hello World!</h1> 
     {% endif %} 

     <!-- variable example end --> 

    <img src="css/images/icons/resultset_previous.png" width="16" height="16" alt="previous" title="Previous" border="0"> 

    </body> 
</html> 

Mẫu chạy tốt và gương mẫu biến chạy như mong đợi. Nhưng hình ảnh không được hiển thị. Trả về gỡ lỗi: "GET /hello/css/images/icons/resultset_previous.png HTTP/1.1" 404 -

Tôi chạy Flask trong VirtualEnv như được đề xuất trong tài liệu. Đường dẫn đến hình ảnh dường như không rõ. Làm thế nào tôi có thể thiết lập đường dẫn?

+0

Bạn đã thiết lập đường dẫn theo khuyến cáo của hướng dẫn chưa? – debianplebian

+0

nếu bạn đang sử dụng virtualenv, bạn có thể xem phiên bản jinja và bình bạn đang sử dụng bằng cách thực hiện 'pip freeze' từ dòng lệnh. – richsilv

Trả lời

7

Xem this section tài liệu Flask.

Cách đúng để tham khảo các tập tin tĩnh từ mẫu của bạn là:

<img src="{{ url_for('static', filename = 'css/images/icons/resultset_previous.png') }}" width="16" height="16" alt="previous" title="Previous" border="0"> 
+0

đây là trình tiết kiệm cuộc sống, cảm ơn rất nhiều –

18

Đối Flask, bạn nên giữ các tập tin tĩnh thường dưới một thư mục "tĩnh" và sau đó sử dụng chức năng url_for. Cho phép nói rằng dự án của bạn được gọi là "myproject" và sử dụng ví dụ của bạn, nó sẽ giống như thế:

myproject/ 
    app.py 
    templates/ 
    static/ 
     css/ 
      images/ 
       icons/ 
        resultset_previous.png 

Sau đó, trong mẫu, bạn có thể gọi

<img src= {{ url_for('static', filename = 'css/images/icons/resultset_previous.png') }} width="16" height="16" alt="previous" title="Previous" border="0"> 

Ngoài ra, để trả lời câu hỏi của bạn về jinja phiên bản, v.v. hãy kiểm tra điều này ra

https://github.com/mitsuhiko/flask/blob/master/.travis-lowest-requirements.txt

+1

Cảm ơn rất nhiều. Điều này làm kob – Bernard

+0

Nếu nó hoạt động, xin vui lòng chấp nhận câu trả lời cho những người khác để xem. – codegeek

+0

Cảm ơn rất nhiều. Điều này đã giúp! –

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