Django. не может получить доступ к статическим файлам в локальной разработке
Я пытаюсь обслуживать статические файлы в моей локальной разработке (на том же сервере, на котором я обслуживаю свой сайт). Я запустил ./manage.py collectstatic
со следующими конфигурациями:
settings.py
STATIC_URL = 'static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')
template.html
{% load static %}
<img src="{% static 'apis/icons/random-svgrepo-com.svg' %}" style="width: 50px;">
Теперь у меня есть папка staticfiles в папке BASE_DIR, но когда я пытаюсь получить изображение, кажется, что оно не работает, как ожидалось.
http://127.0.0.1:8000/static/apis/icons/random-svgrepo-com.svg
Помогите, пожалуйста. Что я делаю неправильно?
Во-первых, я думаю, что у вас не настроены статические файлы и медиафайлы. Попробуйте настроить их следующим образом. В файле 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