Возникает проблема при загрузке файлов из папки static
Я новичок в django и столкнулся с проблемой, следуя учебнику на YouTube Я застрял в ней и попробовал несколько вещей, но не избавился от нее, пожалуйста, помогите мне, чтобы моя статическая страница, которую я изменил на динамическую, загрузилась с изменениями, которые я сделал. Все работает нормально, кроме того, когда я пытаюсь запустить ее с помощью {%static%} и я также сказал системе о статическом материале через {%load static%}, но она не показывает изображения, которые я пытаюсь показать через папку static.
- Элемент списка
Не отображаются картинки на веб-странице. Возникает проблема с загрузкой из папки static.
Не уверен, в чем именно заключается ваша проблема, но, насколько я понимаю, вы пытаетесь использовать изображения из папки static в шаблоне django
. Этого можно достичь, правильно настроив django и используя теги шаблона.
В разработке
Чтобы это работало с сервером разработки, необходимо создать папку с названием static
внутри папки каждого приложения. Например, файловая структура вашего проекта может выглядеть следующим образом:
project
|_ project
|_ app
|_ static
|_ app
|_ image.png
|_ templates
|_ app
|_ home.html
|_ __init__.py
|_ admin.py
|_ models.py
|_ tests.py
|_ urls.py
|_ views.py
|_ db.sqlite3
|_ manage.py
Затем вы просто обращаетесь к своему изображению из шаблона home.html
, добавляя {% load static %}
в начало файла и используя {% static "app/image.png" %}
везде, где вы хотите использовать свое изображение. Обратите внимание, что этот тег шаблона в основном дает вам url к статическому файлу, который вы хотите показать. Поэтому, на самом деле, вы должны вставить изображение следующим образом:
<img src="{% static 'app/image.png' %}" />
В производстве
В продакшене нам нужно собрать все статические файлы из разных приложений в одном общем месте, чтобы сервер мог легко их найти. Мы делаем это с помощью полезного приложения django
staticfiles
, которое мы можем настроить в файле settings.py
.
settings.py
Убедитесь, что ваш settings.py
включает следующие строки
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
INSTALLED_APPS = [
...
'django.contrib.staticfiles',
...
]
STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
Вы можете заменить 'static/'
на то, что вы хотите сделать своим статическим url. Вы можете заменить 'staticfiles'
в STATIC_ROOT
на имя корневой папки, в которой вы будете собирать ваши статические файлы. Эта папка должна находиться (при данной конфигурации) в базовой директории вашего проекта - в той же папке, где находится ваша база данных (db.sqlite3
). Например:
project
|_ project
|_ app
|_ staticfiles
|_ db.sqlite3
|_ manage.py
Когда вы запустите python3 manage.py collectstatic
, все статические файлы каждого приложения вашего проекта будут скопированы в каталог STATIC_ROOT
, так что все они будут доступны из одного и того же места. Ваша файловая структура будет выглядеть следующим образом:
project
|_ project
|_ app
|_ staticfiles
|_ app
|_ image.png
|_ db.sqlite3
|_ manage.py
Наконец, вам нужно указать вашему рабочему серверу, где находится каталог staticfiles
, и все готово к работе (как это сделать, зависит от используемого вами хостинга).
Надеюсь, это поможет!