2017-02-07 14 views
0

Я пытаюсь запустить свой самый первый проект с использованием Python/Django на Openshift и проблема с загрузкой моих статических файлов.Статические файлы Django (404 не найдены) - Openshift

Я читал https://docs.djangoproject.com/en/dev/howto/static-files/ несколько раз. Я ломаю голову над этим на целый день, но не могу понять проблему.

Я бегу сервер разработчика:

python manage.py runserver 

setting.py

STATIC_URL = '/static/' 

if 'OPENSHIFT_REPO_DIR' in os.environ: 
    STATIC_ROOT = os.path.join(os.environ.get('OPENSHIFT_REPO_DIR'), 'wsgi', 'static') 
else: 
    STATIC_ROOT = os.path.join(WSGI_DIR, 'static') 

шаблон

{% load static %} 
<a href=""><img src="{% static "logo2.png" %}"></a> 

urls.py

from django.conf.urls import include, url 
from django.contrib import admin 
from django.views.generic import RedirectView 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

urlpatterns = [ 
    url(r'^$', RedirectView.as_view(url='/index/')), 
    url(r'^index/', include('index.urls')), 
    url(r'^polls/', include('polls.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
] 

urlpatterns += staticfiles_urlpatterns() 

Самое странное, что после нажатия моего приложения на открытие-сдвиг все работает отлично, но на localhost sth идет не так.

сделать длинную историю короткой:

  • 127.0.0.1:8000/static/logo2.png - не найдены
  • mysite.rhcloud.com/static/logo.png - Да, я вижу изображение

Надеюсь, это ясно, и моя проблема такая же глупая, как я себе представляю.

Django 1.8, операционная система Windows

РЕШЕНИЕ:

Я удалил 'django.contrib.staticfiles' из INSTALLED_APPS и добавить к urls.py этот мир кода:

if settings.DEBUG: 
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

ответ

-1

Вы находитесь в режиме разработки? Если да, и если у вас нет django.contrib.staticfiles в INSTALLED_APPS, вам нужно добавить это urls.py:

from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = [ 
... 
] 

if settings.DEBUG: 
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

Разъяснения here.

+0

Да, я думаю, что я в режиме разработки (DEBUG = True), и у меня есть django.contrib.staticfiles в INSTALLED_APPS. Этот мир кода не решает проблему, и статические файлы все еще не найдены. – dekarz

+0

Редко это хорошая идея. Когда у вас есть 'DEBUG = True', Django обычно может обслуживать статические файлы из' STATIC_URL', не добавляя ничего в 'urlpatterns'. Вероятно, проблема заключается в том, что вы ставите статические файлы в 'WSGI_DIR/static', а не в каталог приложения, который является каноническим. –

+0

Может быть и из-за этого, но как только у меня была такая же проблема, и я только исправил это решение. Если это не очень хорошая идея, почему это делается в официальных документах django? –