Я использую Django ImageField, но не могу получить доступ к изображениям на своей веб-странице.

это models.py

from django.db import models

# Create your models here.
class Products(models.Model):
    name_product=models.CharField(max_length=100)
    category_product=models.CharField(max_length=100)
    price_product=models.CharField(max_length=200)
    image_product=models.ImageField(default='Image.png',upload_to='web/')
    description_product=models.CharField(max_length=400)

это views.py

from django.shortcuts import render
from .models import Products

# Create your views here.

def asli(request):
    data=Products.objects.all()
    return render(request,'home.html',{'data':data})

Это моя веб-страница

<img src="{{ data.image_product.url }}" alt="Product Image">

Я попробовал этот код в setting.py, но он все равно не показывает мои фотографии на моей веб-странице. P.s: Соединение было установлено правильно

MEDIA_URL = "media/"
MEDIA_ROOT = BASE_DIR / "media"

Если вы поместите <img> в такой блок:

{% for item in data %}

{% endfor %}

где вы пишете item после for, то вам нужно изменить {{ data.image_product.url }} на {{ item.image_product.url }}.

1. Вы должны убедиться, что ваши медиафайлы будут обслуживаться на указанном MEDIA_URL, так как Django не будет делать это за вас. Вы можете использовать локальный сервер Django, поскольку вы все еще находитесь в режиме DEBUG.

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

urlpatterns = [•••Rest of code•••]

if settings.DEBUG:
    urlpatterns += [
        static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    ]

2. data - это QuerySet. Чтобы получить каждое значение внутри него, необходимо выполнить итерацию. См. тег шаблона for.

{% for product in data %}
    <p>{{ product.name_product }} </p>
    <p>{{ product.category_product }} </p>
    <p>{{ product.price_product }} </p>
    <img src="{{ product.image_product.url }}" alt="{{ product.name_product }}" />
    <p>{{ product.description_product }} </p>
{% endfor %}

1. Configure urls.py

Убедитесь, что вы добавили следующую конфигурацию в ваш основной файл urls.py для обслуживания медиафайлов

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

urlpatters = [
    # url
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

2. Update Your Template

В своем шаблоне вы можете получать и отображать изображения, используя следующий пример. Убедитесь, что вы используете атрибут URL поля image, чтобы получить правильный путь к изображению.

{% for i in data %}
    <p> {{ i.name_product }} </p>
    <p> {{ i.category_product }} </p>
    <p> {{ i.price_product }} </p>
    <img src="{{ i.image_product.url }}"/>
    <p> {{ product.description_product }} </p>
{% endfor %}

Примечание: Обязательно добавьте URL при получении изображения {{i.image_product.url }}

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