Исправление загрузки статических шаблонов Django
Я долго искал ответ на этот вопрос, и мне кажется, что я все делаю правильно и воспользовался предложениями в нескольких постах, но это все еще ставит меня в тупик. Я пытаюсь загрузить статику в мой шаблон django, но по какой-то причине я продолжаю получать ошибку нерешенного шаблона и он не загружается в браузере.
project/settings.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATIC_FILES_FIRS = [os.path.join(BASE_DIR, 'static')]
Я установил статический корень. Затем в моем base.html у меня есть:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" type="image/png" sizes="16x16" href="{% static "favicon/favicon.png" %}">
<title>Title</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body>
{% include "navbar.html" %}
<img src="{% static "favicon/favicon.png" %}" alt="img"/>
<main class="container mx-auto p-8">
{% block main %}{% endblock %}
</main>
</body>
</html>
Мне кажется, что я упускаю что-то очевидное, потому что эта директория должна существовать, но шаблон django не находит ее! Я пробовал использовать {% load staticfiles %} вместо этого, но он выдает ошибку, говоря, что не может найти staticfiles. Любая помощь будет оценена по достоинству!
Edit: Я использую django 4.0.6, если это имеет значение!
Спасибо, Митчелл
Сначала,
STATIC_FILES_FIRS = [os.path.join(BASE_DIR, 'static')]
Должно быть
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
Кроме того, проверьте в настройках, установлен ли параметр DEBUG в True или False. Если True, убедитесь, что вы запустили python manage.py collectstatic
и что он поместил ваши файлы в папку STATIC_ROOT - которая должна быть BASE_DIR/static
Если это не поможет, посмотрите на HTML в браузере и посмотрите, какой img src генерируется там, а также на значение BASE_DIR, чтобы убедиться, что вы начинаете с правильного уровня.
Мне удалось решить эту проблему, удалив параметр STATIC_ROOT.
Я не могу объяснить, почему это работает, но я приму это.