LoginSignup
0
0

【Django】STATIC_URLの'/static/'と'static/'...バージョンによって異なる!CSS読み込みエラーを対処

Posted at

概要

DjangoでCSSの読み込みがされない現象が発生しましたので、その原因と解決方法を記載します。バージョンは、Django 3.0.5を使っています。

結論、DjangoのバージョンによってSTATIC_URLの書き方が異なる、ということでした。

STATIC_URL = 'static/'の場合:

以下は/adminを叩いた場合です。
見ての通り、CSSが反映されていません。

image.png

ログには以下のようにCSS読み込みエラーが出ていました。

Not Found: /admin/static/admin/css/base.css
Not Found: /admin/static/admin/css/responsive.css
[01/Nov/2023 13:31:24] "GET /admin/static/admin/css/base.css HTTP/1.1" 404 4927
Not Found: /admin/static/admin/css/dashboard.css
[01/Nov/2023 13:31:24] "GET /admin/static/admin/css/responsive.css HTTP/1.1" 404 4945
[01/Nov/2023 13:31:24] "GET /admin/static/admin/css/dashboard.css HTTP/1.1" 404 4942

もちろん、ルートを叩いても同じです。
以下のように出ました。

Not Found: /static/polls/style.css

STATIC_URL = '/static/'の場合:

わずかな変化ですが、'/static/'というように/を頭につけてあげると、CSSが反映されました。

image.png

原因はバージョンだった

調べてみると、

古いDjangoのバージョン='/static/'
新しいDjangoのバージョン='static/'

とのこと。

以下の記事にもこのように書いてありました。

古いバージョンの Django の場合、STATIC_URL = '/static/' と定義されている可能性があります
このように STATIC_URL が定義されている場合、以降の解説は、/STATIC_URL を STATIC_URL に置き換えて読んでいただければ話が合うはずです
引用元:【Django】静的ファイルの扱い方(画像・CSS・JS)

今回、自分はDjango4.1で作ったDjangoチュートリアルのアプリを、
既存で使っていたDjangoアプリケーション(3.0.5)のsettings.pyと混ぜて使ってしまっていました。
そのため、このようにバージョン違いによるエラーが発生してしまったのです。

たった一つの/で解決しました。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0