Возникает проблема при загрузке файлов из папки static

Я новичок в django и столкнулся с проблемой, следуя учебнику на YouTube Я застрял в ней и попробовал несколько вещей, но не избавился от нее, пожалуйста, помогите мне, чтобы моя статическая страница, которую я изменил на динамическую, загрузилась с изменениями, которые я сделал. Все работает нормально, кроме того, когда я пытаюсь запустить ее с помощью {%static%} и я также сказал системе о статическом материале через {%load static%}, но она не показывает изображения, которые я пытаюсь показать через папку static.

  1. Элемент списка

Не отображаются картинки на веб-странице. Возникает проблема с загрузкой из папки 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, и все готово к работе (как это сделать, зависит от используемого вами хостинга).

Надеюсь, это поможет!

Вернуться на верх