P粉1555517282023-08-24 12:55:28
静的ファイルの場所を移動したいだけの場合、最も簡単な方法はコンストラクターでパスを宣言することです。以下の例では、テンプレートと静的ファイルを web
というサブフォルダーに移動しました。
static_url_path=''
URL から先行するパスをすべて削除します。 static_folder='web/static'
フォルダー内で見つかったすべてのファイルを提供します
web/static
静的ファイルとして。 template_folder='web/templates'
同様に、これも変更されます
テンプレートフォルダー。 このメソッドを使用すると、次の URL から CSS ファイルが返されます:
リーリー最後に、フォルダー構造のスナップショットを示します。flask_server.py
は Flask インスタンスです。
P粉2129717452023-08-24 09:31:38
運用環境では、静的フォルダーからの /static
リクエストを処理するようにアプリケーションの前に HTTP サーバー (Nginx、Apache など) を構成します。専用 Web サーバーは、静的ファイルを効率的に提供するのに非常に優れていますが、容量が少ない場合は Flask と比べて違いに気づかないかもしれません。
Flask は、Flask アプリケーションを定義する Python モジュールの隣の static
filename を提供する
/static/ ルートを自動的に作成します。 。静的ファイルにリンクするには、
url_for
を使用します: url_for('static', filename='js/analytics.js')
#send_file または send_static_file
をユーザー指定のパスとともに使用しないでください。これにより、ディレクトリ トラバーサル攻撃
にさらされることになります。 send_from_directory 既知のディレクトリへのユーザー指定のパスを安全に処理するように設計されており、パスがディレクトリをエスケープしようとするとエラーが発生します。
ファイル システムに書き込まずにメモリ内にファイルを生成している場合は、
オブジェクトを send_file## に渡すことで、ファイルとして提供できます。 # 。この場合、ファイル名やコンテンツ タイプなどを推測できないため、追加のパラメータを
send_file
に渡す必要があります。