Django: Загруженные изображения не отображаются в шаблоне, пишет, что файл не найден

Я не могу получить изображение в моем шаблоне из базы данных. Я установил подушку для поддержки ImageField, но она не работает, но она успешно установлена в моем файле proof.Я получаю битое изображение вместо загруженного. Пожалуйста, помогите мне. Примечание: Я не использую виртуальную среду. Ниже приведены мои коды. ошибка: error pic изображение не найдено.

Views.py

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

models.py

class dr_reg(models.Model):
user = models.OneToOneField('User',on_delete=models.CASCADE, primary_key=True)
fname = models.CharField(max_length=50,blank=False)
lname = models.CharField(max_length=50,blank=False)
image = models.ImageField()
specialisation = models.CharField(max_length=100,blank=False)
qualificaton =  models.CharField(max_length=100,blank=False)
phone = models.CharField(max_length=12,blank=False,unique=True)
gender = models.CharField(max_length=7,blank=False)
address = models.TextField(max_length=500,blank=False)
state =  models.CharField(max_length=50,blank=False)
city = models.CharField(max_length=50,blank=False)
zip = models.CharField(max_length=50,blank=False)
email = models.EmailField(max_length=50,blank=False)
dUsername = models.CharField(max_length=100,blank=False,unique=True)
dPassword = models.CharField(max_length=100,blank=False)

def __str__(self):
    return self.fname

home.html

{% extends 'base.html' %}
{% load static %}
<head>
<link rel="stylesheet" href="{% static 'style1.css' %}" type="text/css">
{% block title %}Home{% endblock title %}
</head>

{% block body %}

<div class="container">  
<div class="row">
{% for n in dr_data %} 
<div class="col-md-4">
<div class="card mb-2">
    {% if n.image %}
    <img src="{{ n.image.url }}" class="card-img-top" alt="img">
    {% endif %}
    <div class="card-body">
        <h5 class="card-title">{{ n.fname }} {{n.lname}}</h5>
        <p class="card-text">{{ n.gender }}</p>
        <p class="card-text">Qualificaton: {{n.qualificaton}}</p>
        <p class="card-text">Specialisation: {{n.specialisation}}</p>
        <p class="card-text">Email: {{n.email}}</p>
        <p class="card-text">City: {{n.city}}</p>
        <p class="card-text">Contact: {{n.phone}}</p>
        <p class="card-text"><small class="text-muted">3 min ago:</small></p>
        <a href=""
           class="btn btn-success">
            Book Appointment
        </a>
    </div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endblock body %}

settings.py

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

urls.py

from django.views import View
from . import views
from django.contrib import admin
from django.urls import path

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

urlpatterns = [
  path('', views.home, name="home"),
  path('about', views.about, name="aboutus"),
  path('contactus', views.contactus, name="contact"),
]

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

Я добавил этот settings.DEBUG в каждый файл url.

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

image = models.ImageField(upload_to="folder-in-media-root/")

Во-вторых, вам нужно установить библиотеку pillow, чтобы использовать Django imageField

pip install pillow

Вот ссылка на документацию, которую вы можете просмотреть ImageField: https://docs.djangoproject.com/en/4.1/ref/models/fields/#django.db.models.ImageField FileField: https://docs.djangoproject.com/en/4.1/ref/models/fields/#django.db.models.FileField

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