2016-09-20 2 views
1

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

my_project/ 
    ... 
    static/ 
    img.png 

В моем settings.py у меня есть это:

STATIC_ROOT = os.path.join(BASE_DIR, "static") 
STATICFILE_DIRS = [ 
    os.path.join(BASE_DIR, "static"), 
] 
STATIC_URL = '/static/' 
STATICFILES_FINDERS = ( 
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

и в my_project/urls.py у меня есть это:

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

urlpatterns = [ 
    # ... 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^', include('app.landing.urls')), 
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

Это все кажется правильным. Когда я посещаю http://127.0.0.1:8000/static/img.png, я получаю 404.

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

+0

Из документов: Во время разработки, если вы используете django.contrib.staticfiles, это будет сделано автоматически runserver когда это Для DEBUG установлено значение True (см. Django.contrib.staticfiles.views.serve()). –

+0

Это спокойная архитектура? Я имею в виду, если у вас есть отдельный внешний интерфейс, работающий в другом порту? – AceLearn

+0

Вы использовали nginx? – Windsooon

ответ

0

Вы можете отлаживать это различными способами. Вот мой подход.

главный settings.py:

DEBUG = False 
TDEBUG = True 

urls.py:

from django.conf import settings 
import os 

if settings.TDEBUG: 
    urlpatterns += patterns('', 
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', 
     {'document_root': os.path.join(os.path.dirname(__file__), 'static')}), 
    ) 
Смежные вопросы