2015-01-03 7 views
10

Я ломаю голову над этим на целый день, но не могу понять проблему. Это произошло после того, как я скопировал свой проект с одной машины на другую.Django: Статический контент не найден

Settings.py

STATIC_URL = '/static/' 
STATIC_ROOT = 'staticfiles' 
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
) 

Названные 'django.contrib.staticfiles' в INSTALLED_APPS, а также.

структура папок:

Django-Projects (root) 
    project 
    app 
    static 
     css 
      home.css 
     js 
    manage.py 

Шаблон:

{% load staticfiles %} 

<link rel="stylesheet" href="{% static 'css/home.css' %}"> 

urls.py

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

Он выдает ошибку в консоли при открытии шаблона:

GET http://127.0.0.1:8000/static/css/home.css 
Failed to load resource: the server responded with a status of 404 (NOT FOUND) 

Что может быть неправильным здесь? Пожалуйста, помогите мне. Большое спасибо!

+0

Вы можете оставить urls.py как часть вопроса? – avenet

+0

@avenet: Выполнено. – moaglee

+3

Действительно ли DEBUG установлен в True? У вас есть «django.contrib.staticfiles» в INSTALLED_APPS? –

ответ

1

Django default BASE_DIR будет искать статический контент для вас. Но в вашем случае вы изменили путь до первоначального проекта. Так что в вашем случае вы должны изменить ваш BASE_DIR как это .. то только статический файл будет служить правильно

BASE_DIR = os.path.dirname(os.path.abspath(__file__) + '../../../') 

Обновлено:

Я не видел, что комментарий. ! DEBUG = True только для разработки и Вы можете установить в качестве Ложные так будет Джанго использование STATIC_ROOT = 'staticfiles' служить статический контент на окружающую среду производства ... Спасибо

5

В вашем settings.py

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
) 
STATIC_URL = '/static/' 

Затем в файл шаблона:

<link rel="stylesheet" href="{{ STATIC_URL }}css/home.css"> 

С корневой структурой каталога, которую вы показали, я думаю, что приведенная выше настройка должна работать. Однако не проверял. Дайте мне знать, если это сработает.

+2

Это дает мне ошибку: 'STATICFILES_DIRS sett ING не должен содержать настройки STATIC_ROOT' ... мои мысли: http://stackoverflow.com/a/38387854/2586761 – ptim

4

DEBUG=True и посмотрите, работает ли оно. Это означает, что django будет обслуживать ваши статические файлы, а не httpserver, который в этом случае не существует с момента запуска приложения локально.

3

Я исследовал эту проблему на целый день. set DEBUG = True ALLOWED_HOSTS = [] будет в порядке.

0

Вы не должны обращаться к STATIC_ROOT = 'staticfiles'

Точно так же как этот:

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
      os.path.join(BASE_DIR, "static"), 
) 
Смежные вопросы