4

私のFlaskアプリでは、「windows-1251」エンコーディングを使用しています。テンプレートを描画するには、次のように「Content-Type」を設定します。

from flask.helpers import make_response

def render_tmpl_dummy():
    response = make_response("Some Russian text here")
    response.headers['Content-Type'] = 'text/html; charset=windows-1251'
    return response

そして、ここではすべて問題ありません。しかし、私の静的jsファイルも「windows-1251」にあります。それで、'Content-Type=application/x-javascript; charset=windows-1251'すべての静的ファイルに設定する方法はありますか?(追記:事前に手動でUTF-8に変換したくないので、この方法は適していません)

4

2 に答える 2

0

これは、静的フォルダー内のカスタム拡張子を持つすべてのファイルに、開発サーバー上のカスタムMIME タイプを与えることができた方法です。

if __name__ == '__main__':

    CUSTOM_FILE_EXTENSION = '.jsonl'
    CUSTOM_MIME_TYPE = 'application/jsonl+json'

    @flask_app.route(flask_app.static_url_path + '/' + '<path:path>' + CUSTOM_FILE_EXTENSION)
    def jsonl_mime_type(path):
        return flask.send_from_directory(
            directory=flask_app.static_folder,
            path=path + CUSTOM_FILE_EXTENSION,
            mimetype=CUSTOM_MIME_TYPE
        )

実際には、Flask コンストラクターでの add_url_rule() への1 回の呼び出しで構成されているように見える、Flask 静的 Web サーバーを再発明しただけです。

        self.add_url_rule(
            f"{self.static_url_path}/<path:filename>",
            endpoint="static",
            host=static_host,
            view_func=lambda **kw: self_ref().send_static_file(**kw),
        )

Apache がMIME タイプを設定するためのより穏やかな方法を備えている開発サーバーが本番環境のように動作するように、私はこのすべての問題に取り組みました。

于 2022-01-05T18:45:36.977 に答える
-1

静的ファイルは、開発中以外は Web サーバーによって提供されるべきではないため、ファイル エンコーディングを変換することが正しい方法です。

最初にファイルを変換しない理由がボリュームのためである場合は、Python でファイルを utf-8 に変換する方法を参照してください。それを自動化する方法を確認します。

于 2013-02-14T15:35:57.373 に答える