2017-01-17 13 views
0

私はこれについて本当に混乱しています。私はジャンゴのサイトを設定していると私の設定はすべて正しいですが、私は私のサーバーを実行するときにファイルを見つけることはありません。必要なコードについては以下を参照してください。なぜdjango開発サーバが私の静的ファイルを見つけるのではない

settings.py:

INSTALLED_APPS = [ 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.admin', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.sites', 
    'django_comments', 
    'best_schools', 
    'debug_toolbar', 
] 
MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'debug_toolbar.middleware.DebugToolbarMiddleware', 
] 
# --snip-- 
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.dirname(os.path.dirname(
    os.path.abspath(__file__))) + '/static/' 

ディレクトリ構造:コンソールipython

jonathan at k-nine ~/Sites/tbs_django (master tbs_django) [02:04 pm] 
-> ls ./ 
best_schools/ db.sqlite3 license.txt manage.py* README.md requirements.txt static/ tbs/ templates/ 

manage.py findstatic

In [1]: from tbs import settings 

In [2]: settings.STATIC_ROOT 
Out[2]: '/home/jonathan/Sites/tbs_django/static/' 

In [3]: settings.STATIC_URL 
Out[3]: '/static/' 

出力も私静的なディレクトリが表示されません。

jonathan at k-nine ~/Sites/tbs_django (master tbs_django) [02:06 pm] 
-> manage.py findstatic --verbosity 2 custom-admin.css 
/home/jonathan/Sites/tbs_django/manage.py 
No matching file found for 'custom-admin.css'. 

Looking in the following locations: 
    /home/jonathan/.virtualenvs/django-tbs/lib/python3.6/site-packages/django/contrib/admin/static 
    /home/jonathan/.virtualenvs/django-tbs/lib/python3.6/site-packages/debug_toolbar/static 

私はurls.pyでこれを持っている:urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

奇妙なことは、私はmanage.py runserver --nostaticを実行すると、それは完璧に動作していることです。なぜdjangoは私の静的ファイルを見つけられないのですか?私はDjango 1.10.2を実行しています。

+0

静的ファイルはどこにありますか?それらはあなたのアプリの静的/ディレクトリにあり、(manage.py collectstaticによって)本番環境でのみSTATIC_ROOTに移動する必要があります。 – RemcoGerlich

+0

管理者の静的ファイルは機能していますか? – RemcoGerlich

+0

管理者は素晴らしいです。静的ファイルはすべて上記の出力に示されている静的/ディレクトリにあります。私は周りに静的ファイルを移動すると私はそれらを見るためにジャンゴを得ることができるかどうかを参照して遊んでいる – Jonathan

答えて

0

通常アイデア静的ファイルアプリに属し、かつでそのアプリケーションのディレクトリに配置されていることですstatic/。これがDjango自身のアプリが動作する方法です。そのため、管理者が動作します。 best_schoolsアプリ用

静的ファイルは、例えば、(はい、それは二回best_schoolsです)

'/home/jonathan/Sites/tbs_django/best_schools/static/best_schools/' 

にする必要があります。 runserverがそれらを見つけるためには、urls.pyに何かを置く必要があります。あなたが生産に移動し、ファイルがDjangoの以外のいくつかのウェブサーバによって提供されているとき

はその後、あなたはそれは、設定さSTATIC_ROOTへのすべてのINSTALLED_APPSとコピーファイルを検索し、python manage.py collectstaticを実行しているウェブサーバとあなたのサーバー。

0

はurls.pyでそれらの行を追加して使用しようcollectstatic

if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

python manage.py collectstatic

関連する問題