1. ホーム
  2. python

[解決済み] Flaskのcssが更新されない【非公開

2022-02-07 07:34:29

質問

私はMacでFlask(pythonパッケージ)を使っていますが、最初にCSSを書いたときは問題なく表示されました。しかし、更新して確認しようとすると、最初のcssのスタイルしか表示されません。ターミナルを再起動したり、Flaskを再インストールしてみたりしています。何かいい方法はないでしょうか?ありがとうございます。 HTMLはこちらです。

    <!DOCTYPE html>
<html>
<head>
    <title>Title</title>   
    <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>

    <header>
        <div class="header"></div>
        <div class="logo">
            <center><img src="/static/img/p_logo.png" alt="pic"/></center>
        </div>
    </header> 

    <div class="container">
        {% block content %}
        {% endblock %}
    </div>

</body>

そして、これがCSSです。

    * {
font-family: "Times New Roman", Times, serif;
}

header {
background-color: #000000;
width: 100%;
height: 7px;

}       

解決方法は?

問題は、すでに述べたように、ブラウザのキャッシュに関連しています。

それを解決するには、静的な(cssやjs)リンクに何か動的な変数を追加するとよいでしょう。私は、各ファイルの最終更新タイムスタンプが好きです。

/static/css/style.css?q=1280549780

そのためのスニペットを紹介します。

http://flask.pocoo.org/snippets/40/

@app.context_processor
def override_url_for():
    return dict(url_for=dated_url_for)

def dated_url_for(endpoint, **values):
    if endpoint == 'static':
        filename = values.get('filename', None)
        if filename:
            file_path = os.path.join(app.root_path,
                                 endpoint, filename)
            values['q'] = int(os.stat(file_path).st_mtime)
    return url_for(endpoint, **values)