テンプレートから静的ファイルを読み込めないようです。私は公式ドキュメントに従いましたが、何かが足りないに違いありません。
私のディレクトリレイアウト(Djangoによって生成され、ほとんどのファイルは省略されています):
myproject
myproject
settings.py
urls.py
static
css
bootstrap.css
main.css
templates
base.html
myapp1
myapp2
...
manage.py
私のsettings.py
:
STATIC_URL = 'static/'
私は(私のテンプレートから)そのように私のスタイルシートを参照しています:
{% load staticfiles %}
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}" type="text/css">
<link rel="stylesheet" href="{% static "css/style.css" %}" type="text/css">
これは(HTMLで)レンダリングされるとこれを与えます:
<link rel="stylesheet" href="static/css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="static/css/style.css" type="text/css">
しかし、これらのリンクは実際にはどこにもつながりません(私がそれらにアクセスすると、Djangoから404エラーが発生します)。 urls.py
に何かを追加することでこれを修正できると思いますが、サーバーの実行時にDjangoこれは自動的に行われたと思いましたか?何が欠けていますか?
静的ファイルディレクトリをsettings.py
で定義しましたか?
インストールされているアプリに'Django.contrib.staticfiles',
が含まれていると思います。
静的ファイルのディレクトリを定義していない場合は、次のようにすることができます。
import os.path
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)
これは、Windowsの場合Django、
settings.py
import os.path
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join('static'),
)
私の問題は、settings.pyファイルに「STATICFILES_DIRS」を追加することで解決しました
STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
STATICFILES_FINDERS
がsettings.py
で定義されているかどうかを確認します
https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_FINDERS
デフォルト値のSTATICFILES_FINDERS
で十分ですが、2つの選択肢があります。
アプリ内に静的ファイルがあり、このアプリがINSTALLED_APPS
にある必要があります
または、動作がSTATICFILES_DIRS
のいずれかであると予想される場合は、静的ファイルへのパスを使用してDjango.contrib.staticfiles.finders.FileSystemFinder
を定義する必要があります。
Djangoサーバーを実行すると、これは自動的に行われましたか?
どうしてそう思ったの?公式ドキュメントに従っている場合は、それを見つけることはできません。開発でそれらを提供するためにあなたがしなければならないことを読んでください ここ 。
別の問題があります。 STATIC_URL
は相対リンクであるため、ブラウザは既存のページURLに追加します。したがって、/foo
ページを表示している場合、'static/css/style.css'
は/foo/static/css/style.css'
と評価されます。
/
-つまり/static/
-で始まるか、完全なURL(つまりhttp://myserver.com/static/
)であることを確認してください。
私もこの問題に遭遇しました。そして、私は次のようにhrefを修正することで問題を解決しました:
<html>
<link rel="stylesheet" href="{{STATIC_URL}}css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="{{STATIC_URL}}css/style.css" type="text/css">
</html>