Ошибка 404 при загрузке статических файлов в разработке в django

Я пытаюсь загрузить статические файлы в свою среду разработки в django. Мои настройки выглядят следующим образом:

STATIC_ROOT = '/MyProject/myapp/static/'
STATIC_URL = '/static/'
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
)

мой сайт urls.py выглядит так:

from django.conf import settings
import views

from django.conf.urls.static import static
admin.autodiscover()

urlpatterns = patterns('',

) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Мой header-include.html выглядит так:

<link href="{% static 'css/mycss.css' %}" media="screen" rel="stylesheet" type="text/css">

Мой директор css находится по адресу:

мой сайт > статический > css

Я получаю сообщение об ошибке:

localhost/static/css/mycss.css 404 (НЕ НАЙДЕН)

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


person Atma    schedule 26.08.2014    source источник
comment
Не нужен ни поиск статических файлов, ни статический корень   -  person wonderwhy    schedule 27.08.2014
comment
Статические URL-адреса не должны быть сопоставлены   -  person wonderwhy    schedule 27.08.2014
comment
Вам нужно добавить приложение staticfiles contrib в список приложений.   -  person wonderwhy    schedule 27.08.2014
comment
Создайте папку с именем static в папке вашего проекта, и она должна работать.   -  person wonderwhy    schedule 27.08.2014
comment
@wonderwhy у меня установлено приложение. я добавил больше подробностей   -  person Atma    schedule 27.08.2014
comment
@wonderwhy, почему я удалил сопоставление URL-адресов, и он все еще не находит css. Как вы думаете, папка css находится в правильном месте выше?   -  person Atma    schedule 27.08.2014
comment
Не нужно отображать статические запросы. Они отображаются приложением. Посмотрите мой ответ, чтобы проверить, все ли у вас есть, а затем проверьте, называется ли файл таким образом. Если все же выдало 404, скажите   -  person wonderwhy    schedule 27.08.2014
comment
@wonderwhy Я удалил URL-адрес (+ static(settings.STATIC_URL ...). Я также создал еще одну статическую папку как в root_root › static, так и в root_root › mysite_folder › static. Я все еще получаю 404. Спасибо за всю помощь до сих пор .   -  person Atma    schedule 27.08.2014


Ответы (3)


Не нужен ни поиск файлов, ни статический корень. Добавьте приложение djando.contrib.staticfiles в свои приложения. Удалите сопоставление URL-адресов и создайте папку в корне вашего проекта. Он должен работать только с созданной вами ссылкой.

Итак, код:

STATIC_URL = '/static/'

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

Или поместите папку в приложение. Но если вы это сделаете, вы должны вызвать статический URL-адрес как:

{{ STATIC_URL }}

или просто используйте /static/. Затем после этого вызова шаблона django добавьте путь к файлу.

Если вы хотите использовать его внутри приложения, используйте тег, который вы используете. Это для конкретных файлов, таких как пользовательская таблица стилей или файл js, но для общих стилей лучше поместить его туда, где я вам скажу, иначе вам придется скопировать его в каждое приложение, если вы хотите его использовать.

person wonderwhy    schedule 26.08.2014
comment
Я удалил строку: + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) и это все равно не сработало - person Atma; 27.08.2014
comment
Ключевой для меня была строка STATICFILES_DIRS, мне нужно было ее включить. - person Kyle Burkett; 14.07.2020
comment
Перемещение статической папки, которая является частью каталога проекта, в одно из приложений сработало, также сработало возвращение в исходную папку проекта с включенным вышеуказанным параметром. Я считаю, что django обновляется таким образом. Поскольку настройки STATICFILES_DIRS явно предназначены для статических папок вне приложения. - person ivardu; 14.12.2020

В django2 вам просто нужно создать папку статики и шаблонов для отдельного приложения по умолчанию, рендеринг шаблона и статические файлы ищут отдельное приложение для папки статики и шаблонов, в случае, если даже после создания папки и копирования файлов не работает, попробуйте остановить и запустить сервер снова, он исправляет :)

person Murugaraju Perumalla    schedule 22.06.2018
comment
У меня есть статическая папка во вспомогательном приложении, которое не было распознано Django в разработке. Перезапуск сервера фактически исправил это. - person webtweakers; 20.06.2019
comment
@webtweakers Спасибо. Этот комментарий спас меня от часа битья головой о стену после создания моего нового приложения. - person Michael Romrell; 18.04.2020
comment
@MichaelRomrell, я упоминал, что нужно остановить и снова запустить сервер разработки, нет проблем, если вы нашли решение, спасибо за комментарий webtweakers - person Murugaraju Perumalla; 11.12.2020

Мне нужно было переместить мою статическую папку в приложение. В документах django указано, что django будет искать статическую папку в каждом из приложений. Я предполагаю, что корневая папка сайта не считается таковой, поэтому она не была найдена.

Благодаря этому сообщению: Разработка статических файлов Django

person Atma    schedule 27.08.2014
comment
Да, это правда. Но вам не нужно этого делать, если вы этого не хотите. Вы просто должны добавить то, что у меня есть в моем ответе, к вашему коду - person wonderwhy; 27.08.2014