Статические файлы не загружаются на Django
Мои статические файлы не загружаются на Django. Я запускаю это на своей локальной машине. Расположение example.png
- это main/static/main/example.png
. main
- это приложение.
Вот мой settings.py:
Мой шаблон, index.html
:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<nav>
<div class="logo">
Tutorials.
</div>
</nav>
<img src="{% static 'main/example.png' %}" alt="My image">
</body>
</html>
Статические файлы, вызванные в index.html
, не загружаются. Текст alt виден.
Следуйте этому
install:
pip install whitenoise
затем добавьте это поверх установленных приложений.
'whitenoise.runserver_nostatic',
Теперь статические файлы будут загружаться.
Для получения дополнительной информации следуйте документация поwhitenoise
Во-первых, я думаю, что у вас не настроены статические файлы и медиафайлы. Попробуйте настроить их следующим образом. В вашем settings.py
убедитесь, что вы включили STATICFILES_DIR, STATIC_ROOT, MEDIA_URL, MEDIA_ROOT в settings.py
и затем добавьте следующие строки STATIC_URL = 'static/'
MEDIA_URL = 'media/'
STATICFILES_DIRS = [BASE_DIR / 'static']
STATIC_ROOT = BASE_DIR / 'staticfiles/'
MEDIA_ROOT = BASE_DIR / 'static/media'
Этим вы указываете django, где взять ваши статические файлы. Теперь вам нужно добавить ссылку на статические файлы в ваш проект urls.py
. Вы добавите ее как показано ниже.
from django.conf import settings
from django.conf.urls.static import
static
urlpatterns = [
.......
]
urlpatterns +=
static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
Последняя вещь, которую, как я предполагал, вы уже сделали, это создание папки static в корне проекта и внутри этой папки static создайте папку media, в которой будут находиться все изображения, которые вы хотите загрузить.
Теперь запустите python manage.py collectstatic