web-dev-qa-db-ja.com

Django:静的コンテンツが見つかりません

私は丸一日これに頭を悩ませてきましたが、問題を理解することができません。これは、プロジェクトをあるマシンから別のマシンにコピーした後に発生しました。

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)

ここで何が問題なのですか?私を助けてください。どうもありがとう!

11
moaglee

あなたの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">

あなたが示したディレクトリルート構造で、私は上記の設定がうまくいくはずだと思います。しかし、それをテストしていません。動作するかどうか教えてください。

7
tilaprimera

セットする DEBUG=Trueそしてそれが機能するかどうかを確認します..これは、Djangoは静的ファイルを提供し、この場合はアプリをローカルで実行しているため存在しないhttpserverを提供しないことを意味します。

4
doniyor

私はこの問題を丸一日研究していました。これは大丈夫です:

DEBUG = True
ALLOWED_HOSTS = []
3
Wu Jakey

DjangoのデフォルトのBASE_DIRは、静的コンテンツを検索します。しかし、あなたの場合、最初のプロジェクトの前に方法を変更しました。したがって、そのためには、BASE_DIRを次のように変更する必要があります。静的ファイルのみが正しく機能します。

BASE_DIR = os.path.dirname(os.path.abspath(__file__) + '../../../')

更新しました:

そのコメントは見ませんでした。 ! DEBUG = True開発専用で、Falseに設定した場合、Django STATIC_ROOT = 'staticfiles'を使用して本番環境で静的コンテンツを提供します...ありがとうございます

1
Raja Simon

STATIC_ROOT = 'staticfiles'を参照する必要はありません

ちょうどそのように

STATIC_URL = '/static/'

STATICFILES_DIRS = (
           os.path.join(BASE_DIR, "static"),
)
0

Djangoでも同じ問題が発生しました。設定に追加しました:STATIC_ROOT = 'static /'

それが唯一の問題でした。

0
Lily H.