外部のスタイルシートでスタイルを設定しようとしているテンプレートをレンダリングしています。ファイル構造は次のとおりです。
/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ファイル用に) '静的'フォルダーをセットアップする必要があります。私はあなたがそれを上書きしなかったと仮定しています。
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ファイルを探します。
flaskが使用するjinja2テンプレートでは、
href="{{ url_for('static', filename='mainpage.css')}}"
static
ファイルは、特に設定されていない限り、通常static
フォルダーにあります。
私は複数のスレッドを読みましたが、誰もが説明している問題を解決したものはなく、私も経験しました。
Condaから離れてpipを使用してpython 3.7にアップグレードしようとしても、提案されたすべてのコーディングを試しましたが、いずれも修正されませんでした。
そして、ここに理由があります(問題):
デフォルトでは、python/flaskは、次のようなフォルダー構造で静的およびテンプレートを検索します。
/Users/username/folder_one/folder_two/ProjectName/src/app_name/<static>
and
/Users/username/folder_one/folder_two/ProjectName/src/app_name/<template>
pycharm(またはその他)でデバッガーを使用して自分で確認し、アプリの値を確認することができます(app = Flask(name))および検索teamplate_folderおよびstatic_folderの場合
これを修正するには、アプリの作成時に次のような値を指定する必要があります。
TEMPLATE_DIR = os.path.abspath('../templates')
STATIC_DIR = os.path.abspath('../static')
# app = Flask(__name__) # to make the app run without any
app = Flask(__name__, template_folder=TEMPLATE_DIR, static_folder=STATIC_DIR)
tEMPLATE_DIRとSTATIC_DIRのパスは、ファイルアプリの場所によって異なります。私の場合、画像を参照してください。これは、srcの下のフォルダー内にありました。
あなたが望むようにテンプレートと静的フォルダを変更し、アプリ= Flaskに登録することができます...
実際、フォルダーをいじくり回すと問題が発生することがあり、時には機能しないこともありました。これにより、問題が完全に修正されます
htmlコードは次のようになります。
<link href="{{ url_for('static', filename='libraries/css/bootstrap.css') }}" rel="stylesheet" type="text/css" >
現在、flaskのバージョン1.0.2を実行しています。上記のファイル構造は私にとっては機能しませんでしたが、次のような構造が見つかりました。
app_folder/ flask_app.py/ static/ style.css/ templates/
index.html
(「static」と「templates」はフォルダであり、まったく同じ名前を付ける必要があります。)
実行しているflaskのバージョンを確認するには、ターミナルでPythonを開き、それに応じて以下を入力する必要があります。
輸入フラスコ
フラスコ-バージョン