Django не показывает изображение в представлении

#python #html #django #image

#python #HTML #django #изображение

Вопрос:

Здесь мой взгляд выглядит :

введите описание изображения здесь

когда я проверяю элемент, заданный источник изображения :

 127.0.0.1:8000/store/arm-list/apple.jpg
 

и :

введите описание изображения здесь

итак, вот мой код :

urls.py :

 urlpatterns = [

 path('arm-list/', VechileListView.as_view(), name='arm-list'),
]
if settings.DEBUG:
urlpatterns  = static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
 

views.py :

 class VechileListView(ListView):
model = Vechile
template_name = 'store/arm_list.html'
context_object_name = 'arm'

def get_context_data(self, **kwargs):
    # Call the base implementation first to get a context
    context = super().get_context_data(**kwargs)
    # Add in a QuerySet of all the books
    context['vendor'] = Vendor.objects.all()
    return context
 

settings.py

 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
MEDIA_ROOT = os.path.join(BASE_DIR, 'store/images')
MEDIA_URL = '/media/'
 

models.py

 enter code here
class Vechile(models.Model):
 no_polisi = models.CharField(max_length=10)
 alias = models.CharField(max_length=20, null=True)
 photo = models.ImageField(upload_to='', null=True)
 ....
 

arm_list.html

 enter code here
 {% if arm %}
             {% for arm in arm %}
              <tr>
                   <td class="serial">{{ forloop.counter }}</td>
                   <td><img src="{{ arm.photo.url }}"></td>
                   <td>{{ arm.alias }}</td>
                    .....
                    ...
              {% endfor %}
 

вот моя файловая структура

введите описание изображения здесь

Ответ №1:

Проблема, с которой вы столкнулись, заключается в том, что вы установили значение MEDIA_URL /media/ . поэтому, если вы измените значение MEDIA_ROOT /media и загрузите все файлы media/store/images , тогда это должно сработать.

вот так:

settings.py

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

models.py

 class Vechile(models.Model):
    ....
    photo = models.ImageField(upload_to='store/images')
    ....
 

Я надеюсь, что это решит вашу проблему.

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

1. можете ли вы поделиться вами models.py ?