Изображения не отображаются в слайдере на сайте Django

Я выполнил все необходимые шаги для отображения слайдера изображений в моем проекте Django-сайта. Но изображения не отображаются, не выдавая никаких ошибок, я думаю, что есть ошибка в моем home.html файле Django кода. Для этого руководство меня. Спасибо за ваше доброе ожидание

models.py

from django.db import models
from datetime import datetime
from ckeditor.fields import RichTextField
from multiselectfield import MultiSelectField

# Create your models here.
class Car(models.Model):
    state_choice=(
        ('PU', 'Punjab'),
        ('KPK', 'Khyber PukhtunKha'),
        ('BL', 'Balochestan'),
        ('SN', 'Sindh'),
        ('FD', 'Federal Territory'),
    )
    TRANSMISSION_CHOICES = (
        ('M', 'Manual'),
        ('A', 'Automatic'),
    )
    door_choices = (
        ('2', '2'),
        ('3', '3'),
        ('4', '4'),
        ('5', '5'),
        ('6', '6'),
    )

    features_choices=(
        ('Cruise Control', 'Cruise Control'),
        ('Audio Interface', 'Audio Interface'),
        ('Airbags', 'Airbags'),
        ('Air Conditioning', 'Air Conditioning'),
        ('Seat Heating', 'Seat Heating'),
        ('Alarm System', 'Alarm System'),
        ('ParkAssist', 'ParkAssist'),
        ('Power Steering', 'Power Steering'),
        ('Reversing Camera', 'Reversing Camera'),
        ('Direct Fuel Injection', 'Direct Fuel Injection'),
        ('Auto Start/Stop', 'Auto Start/Stop'),
        ('Wind Deflector', 'Wind Deflector'),
        ('Bluetooth Handset', 'Bluetooth Handset'),
    )

    year_choice = []
    for r in range(2000, (datetime.now().year+1)):
        year_choice.append((r,r))
    car_title = models.CharField(max_length=255)
    state = models.CharField(choices=state_choice, max_length=100)
    city = models.CharField(max_length=100)
    color = models.CharField(max_length=100)
    model = models.CharField(max_length=100)
    year = models.IntegerField(('year'), choices=year_choice)
    condition = models.CharField(max_length=100)
    price = models.IntegerField()
    description = RichTextField()
    car_photo = models.ImageField(upload_to='photos/%Y/%m/%d/')
    car_photo_1 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_2 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_3 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    car_photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
    features = MultiSelectField(choices=features_choices, max_length=255)
    body_style = models.CharField(max_length=100)
    engine = models.CharField(max_length=100)
    transmission = models.CharField(max_length=100)
    interior = models.CharField(max_length=100)
    miles = models.IntegerField()
    doors = models.CharField(choices=door_choices, max_length=10)
    passengers = models.IntegerField()
    vin_no = models.CharField(max_length=100)
    milage = models.IntegerField()
    fuel_type = models.CharField(max_length=50)
    no_of_owners = models.CharField(max_length=100)
    is_featured = models.BooleanField(default=False)
    created_date = models.DateTimeField(default=datetime.now, blank=True)

views.py

from django.shortcuts import get_object_or_404, render
from cars.models import Car
# Create your views here.
def cars(request):
    cars = Car.objects.order_by('-created_date')
    data = {
        'cars': cars,
        }
    return render(request, 'cars/cars.html', data)
def car_detail(request, id):
    single_car = get_object_or_404(Car, pk=id)
    data = {
        'single_car': single_car,
    }

    all_cars = Car.objects.order_by('-created-date')
    data = {
        'all_cars' : all_cars,
    } 

    return render(request, 'cars/car_detail.html', data)

home.html Я думаю, что мой код Django в home.html содержит ошибки. помогите в этом вопросе.

Я сделал похожий проект, и все работает. Вот шаги, которые я выполнил

  1. добавьте MEDIA_ROOT и MEDIA_URL в настройки

    MEDIA_ROOT = os.path.join(BASE_DIR,'photos')    
    MEDIA_URL = '/photos/'
    
  2. добавьте MEDIA_ROOT и MEDIA_URL в urls

    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        # you urls here
     ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

А еще у вас есть несколько ошибок

в просмотрах car_detail заменить

all_cars = Car.objects.order_by('-created-date')

с

all_cars = Car.objects.order_by('-created_date')

и в ваших шаблонах, где вы определили <a></a> для автомобиля

<a href="{{car.car_photo}}" class="car-img">
...
</a>

Вы должны передать url в href следующим образом

<a href="{{car.car_photo.url}}" class="car-img">
...
</a>

и основываться на MDN docs Dealing with files

Также рекомендуется разделять слова дефисами, а не подчеркиваниями: my-file.html против my_file.html.

поэтому ваш html-файл должен быть car-detail.html, а не car_detail.html

если это не помогает, попробуйте удалить старые записи в базе данных и добавить их снова с новыми настройками

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