2013-11-28 4 views
0

Мне поручено установить некоторые аспекты сайта django 1.3, который работает на сервере Apache/PostgreSql. Я пытаюсь настроить его на моей машине разработки, с виртуальной средой с postgres и внутренним сервером разработчиков python.Django не узнает мои статические файлы на моей машине dev

Мне удалось запустить сайт и прочитать его из моего локального экземпляра pg, но я не могу получить его, чтобы распознать мои статические файлы, которые хранятся в /site_media. Сайт скоро будет переписан, чтобы использовать django 1.6 и папку /static, но сейчас мне нужно исправить этот сайт.

Я также попытался запустить его с nginx и gnunicorn, но результат тот же, сайт отображается, но без стиля, и все ссылки на файлы в статическом каталоге дают 404. Дальнейшая проверка 404 показывает, что django пытается для разрешения ресурсов с помощью маршрутизатора.

Вот соответствующие настройки:

settings.py: 

# Absolute path to the directory that holds media. 
# Example: "/home/media/media.lawrence.com/" 
MEDIA_ROOT = '/home/nico/src/df2/datos/site_media/' 

# URL that handles the media served from MEDIA_ROOT. Make sure to use a 
# trailing slash if there is a path component (optional in other cases). 
# Examples: "http://media.lawrence.com", "http://example.com/media/" 
MEDIA_URL = 'http://localhost:8000/site_media/' 

Я также добавил следующие конфигурации, но безрезультатно:

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

STATICFILES_DIRS = (
    '/home/nico/src/df2/datos/site_media/', 
) 

STATIC_URL = 'http://localhost:8000/site_media' 

Nginx файла конфигурации:

server { 
    server_name localhost; 

    access_log off; 

    location /site_media/ { 
     alias /home/nico/src/df2/datos/site_media; 
    } 

    location/{ 
      proxy_pass http://127.0.0.1:8001; 
      proxy_set_header X-Forwarded-Host $server_name; 
      proxy_set_header X-Real-IP $remote_addr; 
      add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; 
    } 
} 

Если вам нужна другой конфиг скажите мне.

Я бы предпочел, чтобы запустить это чисто с сервера питона, но решение с gunicorn/Nginx также хорошо

+1

Прочитали ли вы [документы] (https://docs.djangoproject.com/en/1.3/howto/static-files/) и запустили 'collectstatic'? – jonrsharpe

+0

В частности, вы добавили 'staticfiles_urlpatterns()' в свой urlconf? –

+0

@jonrsharpe Я не могу использовать это, потому что корень со статическими файлами уже настроен как media_root, и я не могу изменить структуру каталогов, чтобы поместить статические файлы там, где они должны быть (как я сказал в сообщении, это будущий шаг, на данный момент сайт должен быть оставлен как есть) –

ответ

0

Исправление было добавить статический обработчик к urlpatterns переменной:

from django.conf import settings 

if settings.DEBUG: 
    # static files (images, css, javascript, etc.) 
    urlpatterns += patterns('', 
     (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', { 
     'document_root': settings.MEDIA_ROOT}))