2017-03-11 14 views
1

Raspberry Piでは、サーバーの現在の日付と時刻をWebページに表示する簡単なFlaskアプリケーションを作成しました。その部分は素晴らしい作品です。 ページにも画像が表示されます。その部分は機能しません。画像は、アプリケーションフォルダの下の写真フォルダ:Web_Test/photosに保存されます。 私は静的フォルダに格納されているCSSファイルを使用しています。 は、私がイメージにURLを作成するためになurl_forを使用します。FlaskのWebページで画像ファイルが見つかりません

<p><img src="{{url_for('photos', filename='image1.jpg')}}"></p> 

写真なurl_forコマンドのための既知のエンドポイントではないので、私が使用:app.add_url_rule('/photos/<path:filename>', view_func=app.send_static_file)をエンドポイントとして写真フォ​​ルダを追加します。 WebブラウザからWebページにアクセスするたびに、python(python3 photo.py)を実行したコマンドウィンドウがGET /photos/image1/jpg HTTP/1.1" 404と表示されます。 具体的なエラーはありませんが、画像はありません。 私はこの問題について多くの記事を読んできましたが、何も助けてくれませんでした。 は、これは私のphoto.pyコードです:

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

app.add_url_rule('/photos/<path:filename>', endpoint='photos', view_func=app.send_static_file) 
@app.route('/') 
def photo(): 
    now = datetime.datetime.now() 
    timeString = now.strftime("%Y-%m-%d %H:%M") 
    templateData = { 
     'title' : 'Latest Photo', 
     'time' : timeString 
     } 
    return render_template('photo1.html', **templateData) 

if __name__ == '__main__': 
    app.run(debug=True, host='0.0.0.0', port=80) 

これは私のphoto1.htmlコードです:

<!DOCTYPE html> 
    <head> 
    <link rel="stylesheet" href='/static/style.css' /> 
    <title>{{title}}</title> 
    </head> 

    <body> 
    <h1>Latest Photo</h1> 
    <h2>Current date and time: {{time}}</h2> 
    <p> <img src="{{url_for('photos', filename='image1.jpg')}}"></p> 
    </body> 
</html> 

任意の考えや提案をいただければ幸いです。 ありがとう!あなたはこのようなプロジェクトのレイアウトを再編成する場合

答えて

1

あなたのプログラムが現在書かれている方法、画像が表示されます:

project 
├── app.py 
├── static 
│   └── image1.jpg 
└── templates 
   └── photo1.html 

あなたは写真を表示するためにsend_static_fileを使用するという事実は、写真が静的なリソースであることを示唆しています。

1))static/photos/image1.jpg

2にimage1.jpgを移動し、このようなテンプレートを変更します:その場合は、より良いだろう

<p> <img src="{{url_for('static', filename='photos/image1.jpg')}}"></p> 

3)ドロップをapp.add_url_rule('/photos/<path:filename>', ...)app.py

+0

お返事ありがとうございます。私はそれを試みたが、同じ問題を抱えていた。コマンドウィンドウにこれが表示されます: "GET /static/photo/image1.jpg HTTP/1.1" 404 – simlc0523

+0

まあ、duh。一度私は正しくフォルダ名の綴り(写真の代わりに写真)、それは働いた!ありがとう!私の唯一の懸念は、写真フォルダ内の画像が定期的に更新されることです。それが "静的"フォルダの問題であるかどうかは分かりませんでした。 – simlc0523

関連する問題