Почему изображения из моей медиатеки не отображаются на моей домашней странице? - PullRequest
2 голосов
/ 08 октября 2019

enter image description here

Я включил изображения в свою базу данных и сохранил изображения в каталоге мультимедиа. Когда я получаю доступ к своим данным из базы данных, вся информация загружается, но мои изображения не отображаются. Кто-нибудь может мне помочь?

Это мой файл index.html:

{% block body %}
{% load static %}
<div class="container">
    <h1>Men Fashion</h1>
<div id="demo" class="carousel slide my-3" data-ride="carousel">
    <ul class="carousel-indicators">
      <li data-target="#demo" data-slide-to="0" class="active"></li>

       {% for i in range %}
      <li data-target="#demo" data-slide-to="{{i}}" ></li>
      {% endfor %}
    </ul>

    <!--Slideshow starts here -->
    <div class="container carousel-inner no-padding">

      <div class="carousel-item active">
        <div class="col-xs-3 col-sm-3 col-md-3">
          <div class="card" style="width: 18rem;">
            {% load static %}
            <img src='/media/{{product.0.image}}' class="card-img-top" alt="...">
            <div class="card-body">
                <h5 class="card-title">{{product.0.product_name}}</h5>
                <p class="card-text">{{product.0.desc}}</p>
                <a href="#" class="btn btn-primary">Add to Cart</a>
            </div>
          </div>
       </div>


        {% for i in product|slice:"1:"%}
        <div class="col-xs-3 col-sm-3 col-md-3">
          <div class="card" style="width: 18rem;">
            <img src='/media/{{i.image}}' class="card-img-top" alt="...">
            <div class="card-body">
              <h5 class="card-title">{{i.product_name}}</h5>
              <p class="card-text">{{i.desc}}</p>
              <a href="#" class="btn btn-primary">Add To Cart</a>
            </div>
          </div>
        </div>
        {% if forloop.counter|divisibleby:3 and forloop.counter > 0 and not forloop.last %}
      </div><div class="carousel-item">
        {% endif %}

        {% endfor %}
    </div>



</div>
</div>
    <!-- left and right controls for the slide -->
    <a class="carousel-control-prev" href="#demo" data-slide="prev">
        <span class="carousel-control-prev-icon"></span>
    </a>
    <a class="carousel-control-next" href="#demo" data-slide="next">
        <span class="carousel-control-next-icon"></span>
    </a>


 {% endblock %}

</div> 

Это мой файл models.py, который я включил в свой проект:

from django.db import models

# Create your models here.

class Product(models.Model):
    product_id = models.AutoField
    product_name = models.CharField(max_length=50)
    category = models.CharField(max_length=50, default="")
    subcategory = models.CharField(max_length=50, default="")
    price = models.IntegerField(default=0)
    desc = models.CharField(max_length=300)
    pub_date = models.DateField()
    image = models.ImageField(upload_to='shop/images', default="")

    def __str__(self):
        return self.product_name

Это мой файл setting.py:

STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Я не знаю много об этом, но .. Пожалуйста, посмотрите здесь: Django image src not found

Подобная вам проблема, исправленная кодом. В вашем model.py коде вы говорите:

image = models.ImageField(upload_to='shop/images', default="")

, а в вашем settings.py вы имеете:

STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/

Я не вижу, где вы объявляете путь к вашим изображениям. Попробуйте этот код для settings.py и посмотрите, что работает для вас.

from django.core.files.storage import FileSystemStorage
from django.conf import settings


image_storage = FileSystemStorage(
    # Physical file location ROOT
    location=u'{0}/my_sell/'.format(settings.MEDIA_ROOT),
    # Url for file
    base_url=u'{0}my_sell/'.format(settings.MEDIA_URL),
)


def image_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/my_sell/picture/<filename>
    return u'picture/{0}'.format(, filename)


class Goods(models.Model):
    pic = models.ImageField(upload_to=image_directory_path, storage=image_storage)

Для получения дополнительной информации см .: Источник изображения Django не найден

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

0 голосов
/ 09 октября 2019

Во-первых, вы должны еще раз проверить, куда на самом деле загружаются ваши изображения.

Основываясь на ImageField, я предполагаю, что вы хотите сохранить изображения вашего продукта в медиа / магазине / изображениях. Однако в вашем шаблоне вы вызываете /media/{{product.0.image}}, который будет искать изображения в media/media/shop/images.

Во-вторых, помните, что ищет путь к изображению, а не только само изображение. Так попробуйте это:

<img src="{{product.0.image.url }}" class="card-img-top" alt="...">

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