5

私はherokuにうまくデプロイしているdjangoアプリを持っています。collectstatic コマンドをローカルでドライランすると、すべて正常に動作します。

python manage.py collectstatic --dry-run --noinput
....
Pretending to copy '/Users/hari/.virtualenvs/bsc2/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/ordering.js'
Pretending to copy '/Users/hari/.virtualenvs/bsc2/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js'

71 static files copied.

これにもかかわらず..私のdjango管理者の静的ファイルは使用されず、デバッグがFalseに設定されたherokuで必要最小限のdjango管理者サイトを取得します。

Debug を True に設定すると、heroku に「リッチ」な管理サイトが表示されます。Debug を True または False に設定すると、「git push heroku master」コマンドの端末出力に、静的ファイルの収集に関する情報が表示されません。

Heroku の gunicorn を使用し、「collecting static」メッセージを表示する「helloworld」アプリケーションの例を試してみました。また、このコード スニペットを urls.py に挿入してみました。しかし、それも役に立ちません。

django.confのインポート設定から

if not settings.DEBUG:
    urlpatterns += patterns('',
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),

次に、heroku configに以下を追加してみました

heroku config:add DISABLE_COLLECTSTATIC=0

しかし、それも私のdjango管理サイトにすべてのスタイルを表示しませんでした.

最後に、Procfile で gunicorn に切り替えようとしましたが、管理スタイルも表示されませんでした。Debug=True を設定するだけで、管理スタイルが表示されます。

Heroku の Django 1.4.2 および 1.5.1 でこれを試しましたが、どちらも「通常の」管理サイトを表示していません。S3ルートに行かずに管理者ファイルをherokuに置く方法はありますか?

4

4 に答える 4

11

コマンド端末出力には、静的ファイルの収集に関するものは何もありません。

heroku-buildpack-python:bin/steps/collectstaticを見ると、メッセージを表示する前にcollectstatic --dry-run --noinput出力を実行してパイプしようとしているようです。これは、ローカルボックスに存在しないエラーがある場合、heroku でエラーが表示されないことを意味します。エラーは表示されずに失敗します。(最高の種類の失敗;)/dev/null-----> Collecting static files

一度限りのワーカーを実行して、collectstatic コマンドをテストし、それが環境に問題があるかどうかを確認しましたか?

heroku run python manage.py collectstatic --dry-run --noinput

これが失敗した場合は、問題を調べてさらに診断するためのエラーまたはトレースバックが表示されます。

于 2013-04-07T04:08:02.313 に答える