изображения не отображаются в django

#python #django

#python #django

Вопрос:

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

     <img src="{{About.image.url}}" alt="profile photo">
  

изображение не отображается.. когда я просматриваю страницу в Chrome… он показывает, что источник изображения неизвестен..

      <img src="(unknown)" alt="profile photo">
  

пожалуйста, посмотрите файлы..

settings.py

                          STATIC_URL = '/static/'
           STATICFILES_DIRS =[
                     os.path.join(BASE_DIR,'portfolio/static')
                                ]
             STATIC_ROOT = os.path.join(BASE_DIR,'media')

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

проект urls.py

          from django.contrib import admin
         from django.urls import path,include
         from django.conf import settings
         from django.conf.urls.static import static
        
           urlpatterns = [

          path('admin/', admin.site.urls),
         path('home/', include("home.urls")),
         path('blog/', include("blog.urls")),


             ]   static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT )
  

модель, имеющая изображение, находится внутри приложения с именем «home»

models.py из приложения home

           from django.db import models
          import datetime
          # Create your models here.
            class About(models.Model):
                 image = models.ImageField(upload_to = 'images')
                 desc  = models.TextField()
  

home/views.py

             from django.shortcuts import render
             from home.models import *
            from django.views.generic import ListView

           # Create your views here.
           def index(request):
            abt = About.objects.all()
             return render(request,'home/index.html',{'abt': abt.first()})

         def Experience(request):
            Exp = Experience.objects.all()
             return render(request,'home/Experience.html',{'Exp': Exp})


           class MyView(ListView):
            context_object_name = 'name'
              template_name = 'home/index.html'
              queryset = About.objects.all()

def get_context_data(self, **kwargs):
    context = super(MyView, self).get_context_data(**kwargs)
    context['Experience'] = Experience.objects.all()
    context['Education'] = Education.objects.all()
    context['Award'] = Award.objects.all()
    context['Membership'] = Membership.objects.all()
    context['About'] = self.queryset
    return context
  

Комментарии:

1. Пожалуйста, исправьте свой отступ. С каким представлением у вас возникли проблемы?

Ответ №1:

если вы передаете набор запросов, попробуйте зациклить их и получить доступ к каждому изображению

 {% for data in About %}
 <img src="{{data.image.url}}" alt="profile photo">
{% endfor %}
  

Комментарии:

1. привет, прутви .. это сработало.. но у меня есть вопрос.. эта конкретная модель будет иметь только одну строку… нужно ли нам использовать цикл for даже для синглетов

2. Если вы хотите отправлять всегда один объект, то в queryset вместо About.objects.all() pass About.objects.first() тогда нет необходимости в for-loop, потому что он вернет один объект, а не queryset