Проект Django с сервером gunicorn на Heroku не обслуживает статические файлы

Мой проект Django 1.3 обслуживает статические файлы на сервере разработки, но статические файлы сервера gunicorn не обслуживаются. Я следовал инструкциям этого руководства по Heroku .

Когда я использовал содержимое моего procfile, как в руководстве( web: gunicorn myproject_django.wsgi -b 0.0.0.0:$PORT)мой проект не был распознан Heroku.

Затем я изменил этот Procfile на этот:

web: python myproject_django/manage.py run_gunicorn -b 0.0.0.0:$PORT -w 3

Теперь мое приложение работает, за исключением статических файлов (css, не активных и изображений ).

Дерево моего проекта:

.
├── Procfile
├── myproject_django
│   ├── core
│   │   ├── admin.py
│   │   ├── __init__.py
│   │   ├── models.py
│   │   ├── static
│   │   │   ├── css
│   │   │   │   ├── base.css
│   │   │   │   ├── layout.css
│   │   │   │   
│   │   │   └── media
│   │   │       ├── pek.ico
│   │   │       ├── pek.png
│   │   │       ├── pek_symbol.png
│   │   ├── tests.py
│   │   └── views.py
│   ├── __init__.py
│   ├── manage.py
│   ├── settings.py
│   ├── templates
│   │   └── core
│   │       ├── home.html
│   │       └── install.html
│   └── urls.py
└── requirements.txt

Потенциально важные части settings.py

MEDIA_ROOT = ''

MEDIA_URL = '/static/media'

STATIC_ROOT = ''

STATIC_URL = '/static/'

ADMIN_MEDIA_PREFIX = '/static/admin/'

STATICFILES_DIRS = (
    os.path.abspath(__file__)+'/..'+'/myproject_django/core/static', 
)

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)


INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'core',
    'gunicorn',
    'django.contrib.admin',
)

Изменить

Я исправил следующие вещи после записи Франциска Яконьелло:

В настройках.py

STATIC_ROOT = os.path.join(os.getcwd(),'core/static')
STATICFILES_DIRS = ( os.path.abspath(__file__)+'/..'+'/core/static', )

В gitignore:

staticfiles/*

Потом совершил. И, наконец, побежал heroku run python myproject_django/manage.py collectstatic.

Но статические файлы по-прежнему не обслуживаются, когда я проверяю веб-страницу. Учитывая мое дерево каталогов, почему эти изменения не сработали?

Редактировать2

Я все еще не вижу свои статические файлы. Когда я нажимаю на изображение, когда DEBUG=Trueя получаю это:

Request URL: http://myproject.herokuapp.com/static/media/pek.png

Дерево(Обратите внимание, что каталог staticfilesпуст)

.
├── Procfile
├── myproject_django
│   ├── admin
│   ├── core
│   │   ├── admin.py
│   │   ├── __init__.py
│   │   ├── models.py
│   │   ├── static
│   │   │   ├── css
│   │   │   │   ├── base.css
│   │   │   │   ├── layout.css
│   │   │   └── media
|   |   |       ├── pek.ico
|   │   │       ├── pek.png
|   │   │       ├── pek_symbol.png
│   │   ├── tests.py
│   │   ├── views.py
│   ├── __init__.py
│   ├── manage.py
│   ├── settings.py
│   ├── staticfiles
│   ├── templates
│   │   └── core
│   │       ├── 404.html
│   │       ├── 500.html
│   │       ├── home.html
│   │       └── install.html
│   ├── urls.py
└── requirements.txt

В настройках.py

PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'static/media')
STATIC_ROOT = os.path.join(PROJECT_PATH,'staticfiles')
STATICFILES_DIRS = (
    os.path.join(PROJECT_PATH, 'core/static'),
)

10
задан Bentley4 17 August 2012 в 19:34
поделиться