ホームページ >バックエンド開発 >Python チュートリアル >Flask アプリケーションで静的ファイルを効率的に提供するにはどうすればよいですか?

Flask アプリケーションで静的ファイルを効率的に提供するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-22 14:17:111007ブラウズ

How Can I Efficiently Serve Static Files in a Flask Application?

Flask で静的ファイルを提供する

Flask で静的ファイルを提供するのは、その単純さにもかかわらず、不可解な作業になる場合があります。この記事は、この一般的な問題に対する包括的な回答を提供することを目的としています。

Flask は本質的に、事前定義されたルート /static/ を介した静的ファイルの提供をサポートしており、これはアプリに隣接する静的フォルダーにマップされます。 Pythonモジュール。静的ファイルへのリンクを生成するには、単に url_for 関数を使用します。

url_for('static', filename='js/analytics.js')

静的ファイルの処理に関するヒント

運用環境で最適なパフォーマンスを得るには、HTTP サーバーを次のように構成することをお勧めします。 Nginx または Apache として、Flask アプリケーションに到達する前に静的ファイル リクエストを処理します。

静的ファイルを実装したい場合Flask アプリケーション内でファイルを提供する場合は、send_from_directory の使用を検討してください。この関数は、ベース ディレクトリとパスの 2 つの引数を受け取り、指定されたパスが指定されたベース ディレクトリから外れないようにします。

@app.route('/reports/<path:path>')
def send_report(path):
    return send_from_directory('reports', path)

セキュリティ上の脆弱性を避けるため、send_file または send_static_file を一緒に使用しないでください。信頼できないパス。ディレクトリ トラバーサル攻撃につながる可能性があります。 send_from_directory は、このリスクを軽減するために特別に設計されています。

さらに、ディスクに書き込まずにメモリ内にファイルを生成する場合は、BytesIO オブジェクトを send_file に渡して、通常のファイルのように提供できます。ただし、この場合、ファイル名やコンテンツ タイプなどの詳細を処理するには、send_file に他の引数を明示的に指定する必要があります。

以上がFlask アプリケーションで静的ファイルを効率的に提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。