私は丸一日これに頭を悩ませてきましたが、問題を理解することができません。これは、プロジェクトをあるマシンから別のマシンにコピーした後に発生しました。
Settings.py
STATIC_URL = '/static/'
STATIC_ROOT = 'staticfiles'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
INSTALLED_APPSにも「Django.contrib.staticfiles」と記載されています。
フォルダ構造:
Django-Projects (root)
project
app
static
css
home.css
js
manage.py
テンプレート :
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'css/home.css' %}">
urls.py
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'', include('app.urls')),
)
テンプレートを開くと、コンソールでエラーがスローされます。
GET http://127.0.0.1:8000/static/css/home.css
Failed to load resource: the server responded with a status of 404 (NOT FOUND)
ここで何が問題なのですか?私を助けてください。どうもありがとう!
あなたのsettings.pyで
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
STATIC_URL = '/static/'
次に、テンプレートファイルで:
<link rel="stylesheet" href="{{ STATIC_URL }}css/home.css">
あなたが示したディレクトリルート構造で、私は上記の設定がうまくいくはずだと思います。しかし、それをテストしていません。動作するかどうか教えてください。
セットする DEBUG=True
そしてそれが機能するかどうかを確認します..これは、Djangoは静的ファイルを提供し、この場合はアプリをローカルで実行しているため存在しないhttpserverを提供しないことを意味します。
私はこの問題を丸一日研究していました。これは大丈夫です:
DEBUG = True
ALLOWED_HOSTS = []
DjangoのデフォルトのBASE_DIR
は、静的コンテンツを検索します。しかし、あなたの場合、最初のプロジェクトの前に方法を変更しました。したがって、そのためには、BASE_DIR
を次のように変更する必要があります。静的ファイルのみが正しく機能します。
BASE_DIR = os.path.dirname(os.path.abspath(__file__) + '../../../')
更新しました:
そのコメントは見ませんでした。 ! DEBUG = True
開発専用で、Falseに設定した場合、Django STATIC_ROOT = 'staticfiles'
を使用して本番環境で静的コンテンツを提供します...ありがとうございます
STATIC_ROOT = 'staticfiles'
を参照する必要はありません
ちょうどそのように:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
Djangoでも同じ問題が発生しました。設定に追加しました:STATIC_ROOT = 'static /'
それが唯一の問題でした。