Обычно у меня возникает эта проблема как раз наоборот!
В моей среде разработки мое приложение Django не будет загружать некоторые из моих статических файлов, в частности те, которые я добавил сам: то есть два пакетаЯ добавил в свое приложение (admin
и ckeditor
), оба загружаются нормально, но две из папок, которые я сам создал и связал (img
и css
), не найдены.Вот карта моего каталога:
root
|-- blog (this is the name of my app)
|-- mysite (name of my site)
|-- settings.py
|-- urls.py
|-- media
|-- static
|-- admin
|-- ckeditor
|-- css
|-- img
Как уже говорилось, ckeditor
и admin
прекрасно загружаются, а остальные нет.Вот пример из вывода runserver
в режиме отладки (файл в static/css/base.css
существует в моем дереве файлов):
GET /static/ckeditor/ckeditor/ckeditor.js HTTP/1.1" 200 690627
GET /static/admin/css/fonts.css HTTP/1.1" 200 423
GET /static/admin/css/widgets.css HTTP/1.1" 200 10340
GET /static/css/base.css HTTP/1.1" 404 1761
GET /static/img/brand.png HTTP/1.1" 404 1764
Вот еще некоторая информация, которая может представлять интерес:
- Отлично работает в производстве!Я предположил, что это потому, что у меня были выделенные псевдонимы в моей конфигурации apache, но это не объясняет, почему
admin
и ckeditor
работают. - Я перенаправил мультимедиа почти таким же образом (см. Файл настроекниже), и это прекрасно работает при разработке.
- Я использую тег шаблона
{% load static %}
, как указано в документации Django.В более старых версиях я использовал {% load staticfiles %}
, и я тоже это пробовал. - Я запускал
collectstatic
в обеих средах. - Запуск с
DEBUG=False
отлично работает на производстве (всестатические файлы загружаются) но статические файлы вообще не загружаются, когда DEBUG=False
в разработке.Это, однако, следовало ожидать, так как в процессе разработки у меня нет веб-сервера, чтобы справиться с этим (чтобы уточнить, я обычно запускаю сервер в режиме отладки, но попытался отключить и включить этот параметр впосмотрите, какие изменения произошли)
Чтобы помочь кому-либо отладить мою проблему, вот несколько соответствующих файлов с выдержками:
settings.py
DEBUG = True
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'ckeditor',
'ckeditor_uploader',
]
...
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('', include('blog.urls')),
path('admin/', admin.site.urls),
path('ckeditor', include('ckeditor_uploader.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)