1. ホーム
  2. python

[解決済み] アプリケーションが .css ファイルを拾わない(flask/python) [重複]。

2022-04-26 12:22:27

質問

外部スタイルシートでスタイルを設定しようとするテンプレートをレンダリングしています。ファイル構成は以下の通りです。

/app
    - app_runner.py
    /services
        - app.py 
    /templates
        - mainpage.html
    /styles
        - mainpage.css

mainpage.htmlは次のようになります。

<html>
    <head>
        <link rel= "stylesheet" type= "text/css" href= "../styles/mainpage.css">
    </head>
    <body>
        <!-- content --> 

しかし、私のスタイルはどれも適用されていません。htmlが私がレンダリングしているテンプレートであることと何か関係があるのでしょうか?pythonはこのような感じです。

return render_template("mainpage.html", variables..)

私はまだテンプレートをレンダリングすることができるので、ここまではうまくいっていることを知っています。しかし、スタイル・コードを html の "head" タグ内の "style" ブロックから外部ファイルに移動しようとすると、すべてのスタイルが消え、裸の html ページが残りました。どなたか、私のファイル構造に何か間違いがあるのでしょうか?

解決方法は?

Flask の初期化時に特にオーバーライドしない限り、(css/js ファイル用の)「static」フォルダを設定する必要があります。私は、あなたがそれを上書きしなかったと仮定しています。

cssのディレクトリ構成はこのようになっているはずです。

/app
    - app_runner.py
    /services
        - app.py 
    /templates
        - mainpage.html
    /static
        /styles
            - mainpage.css

Stylesディレクトリは/staticの下にあることに注意してください。

そして、次のようにします。

<link rel= "stylesheet" type= "text/css" href= "{{ url_for('static',filename='styles/mainpage.css') }}">

Flask は static/styles/mainpage.css の下にある css ファイルを探します。