HTML изображение не найдено (django) - PullRequest
1 голос
/ 29 апреля 2020

Я столкнулся с этой проблемой, когда я получаю сообщение об ошибке, сообщающее, что изображение не найдено, и я получаю взломанную картинку на веб-сайте. Я приложу код, включая каталог, а также терминал, где я получаю сообщение об ошибке.

enter image description here

Ответы [ 3 ]

1 голос
/ 29 апреля 2020

Это потому, что с Django вы используете сервер, и он должен знать, где искать файлы и где их обслуживать.

По умолчанию он будет искать в папке с именем "stati c", поэтому вы должны создать каталог с именем "stati c" и поместить туда свои изображения

Затем определите путь где Django будет обслуживать эти файлы в settings.py:

STATIC_URL = '/static/' 

Когда вам нужно добавить изображение в ваши шаблоны, вы должны добавить следующий код:

{% load static %}

<img src="{% static "my_app/example.jpg" %}" alt="My image">

{% load stati c%} нужно вызывать только один раз, вверху файла шаблона.

https://django.readthedocs.io/en/2.2.x/howto/static-files/

1 голос
/ 29 апреля 2020

Добавьте папку stati c в ваш URL-адрес, и она будет работать. Вам также необходимо понимать Python manage.py collectstati c Для доставки на уровне производства файлов stati c в настройках py

0 голосов
/ 29 апреля 2020

В веб-приложении, помимо бизнес-логики c и обработки данных, нам также необходимо обрабатывать и управлять stati c ресурсами, такими как CSS, JavaScript, images et c. Важно управлять этими ресурсами, чтобы они не влияли на производительность нашего приложения. Django очень эффективно справляется с этим и предоставляет удобный способ использования ресурсов.

Для обслуживания файлов c выполните следующую процедуру. Добавьте следующее в settings.py

settings.py

#STATIC_URL: specifies what to append when you call `{% static %}` as template tag. 
STATIC_URL = '/static/'

#STATIC_ROOT: specifies where exactly you yourself will put your static files
STATIC_ROOT = os.path.join(BASE_DIR, 'staticroot')

#STATICFILES_DIRS: it tells Django where to look for static files while 
#serving a request. 
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

После этого создайте каталог staticroot в вашем root вашего проекта . Затем поместите все свои javascript, css, images туда и выполните следующую команду.

python manage.py collectstatic

Эта команда соберет все файлы в папку /static/ .

Теперь, чтобы обслуживать ваши stati c файлы во время разработки, добавьте следующие к вашим основным urls.py

urls.py

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # Your URL configs
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

После этого вы можете использовать ваши stati c файлы где угодно. Например: вам нужно добавить фоновое изображение в ваши шаблоны, вы должны добавить следующий код

шаблон. html

<!--{% load static %} should be always top of your template file. It tells 
Django to load your static files inside template. -->
{% load static %}

<!--{% static 'resource_url' %} means STATIC_URL+'resource_url'. (STATIC_URL 
defined inside your settings.py) -->
<img src="{% static "my_app/example.jpg" %}" alt="My image">

Это должно решить вашу проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...