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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-24 10:25:20287ブラウズ

How Can I Serve Static Files Effectively in My Flask Application?

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

Flask で HTML、CSS、JavaScript などの静的ファイルを提供することは、Web アプリケーションを構築するために不可欠です。ただし、このトピックに関する特定のドキュメントを見つけるのは混乱する可能性があります。

デフォルトでは、Flask は、Flask アプリを定義する Python モジュールの隣にある「static」という名前のサブディレクトリから静的ファイルを自動的に提供します。これらのファイルにアクセスするには、url_for ヘルパーを使用して、「static」プレフィックスが付いた URL を生成します。

url_for('static', filename='css/main.css')

たとえば、URL '/static/css/main.css' へのリクエストは、 「static/css」ディレクトリにあるファイル「main.css」の内容。この方法は、静的ファイル専用のディレクトリがある場合に適しています。

別のディレクトリからファイルを提供する必要がある場合は、send_from_directory 関数を使用できます。

from flask import send_from_directory

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

これにより、ユーザーが URL「/files/」を使用して「files」ディレクトリ内のファイルにアクセスできるようにします。ただし、ユーザーが許可されたディレクトリ外のファイルにアクセスできないように、安全なパス処理が設定されていることを確認する必要があります。

別のオプションは、メモリ内のファイルを送信することです。ファイルシステムに書き込まずにファイルを生成する場合は、BytesIO オブジェクトを send_file 関数に渡して提供できます。

from io import BytesIO
from flask import send_file

@app.route('/download/file')
def download_file():
    # Generate the file in memory
    content = b'...'
    filename = 'report.pdf'

    # Send the file
    output = BytesIO(content)
    return send_file(output, mimetype='application/pdf', as_attachment=True, attachment_filename=filename)

パス セキュリティを処理し、公開する予定のファイルのみを提供することを忘れないでください。これらの方法を使用する場合。

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

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