Heroku - Обработка статических файлов в приложении Django - PullRequest
35 голосов
/ 28 января 2012

У меня есть проект (myapp) в heroku, но я не могу заставить статические файлы работать должным образом. Я следил за этим сообщением в блоге .

Мой Procfile выглядит так:

web: python myapp/manage.py collectstatic --noinput; bin/gunicorn_django --workers=4 --bind=0.0.0.0:$PORT myapp/settings.py

settings.py:

...

STATIC_ROOT = os.path.join(PROJECT_PATH, 'staticfiles')
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'

STATICFILES_DIRS = (
    # I have the static folder inside my app and not inside the project
    os.path.join(PROJECT_PATH, 'cesar/static'),
)

...

При перезапуске с использованием heroku restart это то, что показывает heroku logs:

...
Copying ...

114 static files copied to '/app/myapp/staticfiles'.
...

Но когда я делаю heroku run ls -l myapp/, я не вижу папку staticfiles:

-rw------- 1 u5605 5605    0 Jan 28 16:53 __init__.py
drwx------ 4 u5605 5605 4096 Jan 28 16:53 cesar
-rw------- 1 u5605 5605  503 Jan 28 16:53 manage.py
-rw------- 1 u5605 5605 6292 Jan 28 16:53 settings.py
drwx------ 2 u5605 5605 4096 Jan 28 16:53 templates
-rw------- 1 u5605 5605  257 Jan 28 16:53 urls.py
-rw------- 1 u5605 5605  286 Jan 28 16:53 views.py

Что я пропускаю или делаю неправильно?

Ответы [ 2 ]

38 голосов
/ 17 февраля 2012

Я нашел решение.Это был мой начальный myapp/urls.py:

from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin
from django.conf import settings


admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', include('myapp.cesar.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

Я добавил эти строки в конец исходного myapp/urls.py файла:

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

Теперь все работает нормально.Я надеюсь, что это помогает кому-то еще

0 голосов
/ 28 января 2012

Возможно, вам следует вручную создать пустую папку STATIC_ROOT, указанную в ваших настройках, перед запуском './manage.py collectstatic'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...