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)
Что здесь может быть неправильным? Пожалуйста, помогите мне. Большое спасибо!
Ответы
Ответ 1
В вашем 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
установите DEBUG=True
и посмотрите, работает ли это. Это означает, что django будет обслуживать ваши статические файлы, а не httpserver, который в этом случае не существует с момента запуска приложения локально.
Ответ 3
Я исследовал эту проблему на целый день. Это будет хорошо:
DEBUG = True
ALLOWED_HOSTS = []
Ответ 4
Django default BASE_DIR
будет искать для вас статический контент. Но в вашем случае вы изменили путь до первоначального проекта. Так что для этого в вашем случае вам нужно изменить свой BASE_DIR
следующим образом: тогда только статический файл будет корректно работать
BASE_DIR = os.path.dirname(os.path.abspath(__file__) + '../../../')
Обновлено:
Я не видел этого комментария.! DEBUG = True
только для разработки, и вы устанавливаете как False, поэтому django использует STATIC_ROOT = 'staticfiles'
для обслуживания статического содержимого в рабочей среде... Спасибо
Ответ 5
Вам не нужно ссылаться на STATIC_ROOT = 'staticfiles'
Просто как:
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
Ответ 6
У меня была такая же проблема в Джанго.
Я добавил в свои настройки: STATIC_ROOT = 'static/'
Это была единственная проблема.