2016-08-24 20 views
0

私は既存の(以前は機能していた)Djangoサイトで作業しています。最近、Django 1.8.13から1.10にアップグレードしました.WSGIはGunicornです。それは私の開発マシンからホストされた際に正常に動作しますが、展開されたときに、(管理者および主要サイト上の)すべての静的リソースのメッセージと歩留まり404年代、Directory indexes are not allowed here.Djangoは静的ファイルを提供していません

当社settings.pyには以下が含まれています。

INSTALLED_APPS = (
    ... 
    'django.contrib.staticfiles', 
    ... 
) 

DEBUG = True 
STATIC_URL = '/static/' 
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__)) 
STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR, 'static'), 
) 
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static_resources') 

/my-project-name 
    /my-project-name 
     server.py 
     settings.py 
     urls.py 
     wsgi.py 
    ... 
    /static 
    /static_resources 
    manage.py 
+0

あなたはどのWSGIを使用していますか? – Windsooon

+0

私たちはGunicornを使用しています –

+0

Gunicornはあなたのために静的ファイルを処理しません、静的ファイルにもnginxを使用しましたか? – Windsooon

答えて

0

答えは非常に微妙でした。

url(r'^static/(?P<path>.*)/', 'django.views.static.serve', { 
    'document_root': settings.STATIC_ROOT, 
}), 
:私はそれを変更し

url(r'^static/(?P<path>.*)$', 'django.views.static.serve', { 
    'document_root': settings.STATIC_ROOT, 
}), 

?: (urls.W001) Your URL pattern '^static/(?P<path>.*)$' uses include with a regex ending with a '$'. Remove the dollar from the regex to avoid problems including URLs.

urls.pyでは、私のurlpatternsリストが含まれている:私は1.9にDjangoにアップグレードし、サーバーを実行したとき、それは次の警告を与えました

これにより警告はなくなりましたが、静的リソースのロードが停止しました。 それがために必要な:

url(r'^static/(?P<path>.*)', 'django.views.static.serve', { 
    'document_root': settings.STATIC_ROOT, 
}), 

これはチームのdevのマシン(Windowsのラップトップ)上ではなく、私たちに私のdevのマシン(MacBookの)だけでなく、他に働いていた理由は、私にはまだ謎ですLinuxサーバー。しかし、それは今働くので、私はそれを把握しようとしています。

0

( '静的'、PROJECT_DIR)をos.path.joinする(PROJECT_DIR、 '../static')os.path.join変更しようとSTATIC_ROOT = OS:ディレクトリ構造は次のようになります。 STATIへのpath.join(PROJECT_DIR、 '../static_resources') C_ROOT = os.path.join(PROJECT_DIR、 'static_resources')。あなたの問題を解決します。

+0

それは解決しません。私たちのプロジェクト構造内に実際のディレクトリがないからです。 –

+0

確かに、私はPROJECT_DIRをsettings.pyフォルダの代わりに外側のプロジェクトフォルダを指すように変更しました。センス)を削除し、 "../"を削除しました。まだ何も。 –

1

Djangoは運用モードで静的ファイルを処理しません(DEBUG = False)。 Webサーバーの仕事である運用環境での展開。問題解決するには:ジャンゴ

の静的なフォルダにWebサーバーの構成ポイントで/staticフォルダを

  • 実行python manage.py collectstatic
  • するだけでDEBUGをオンにしないでください、それは危険なことでしょう!

+0

これは開発環境にあり、 'DEBUG = True'があります。元の質問のコードに追加します。 –

+0

明確にするために、私たちは開発マシンからサーバーにデプロイしていますが、テスト用のサーバーなので、 'DEBUG = True'を使用しても安全です。 –

関連する問題