如何在Django Templete中通过循环显示模型中的多个图像

时间:2018-09-11 20:56:51

标签: django image django-templates

我正在尝试创建一个页面,在其中可以使用Django模型中的循环显示数据模型中产品的详细信息,但是当我进入项目列表时,除图像之外的其他详细信息都可以使用,在图像部分中,它显示了alt文本。请帮助我。

我的模特:

class Category(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name


class Item(models.Model):
    name = models.CharField(max_length=150)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    is_active = models.BooleanField(default=True)
    model_pic = models.ImageField(upload_to = 'static/media/')

    def __str__(self):
        return self.name

我的观点:

def item_list(request, category_id):
    category_name = Category.objects.get(pk=category_id)
    list_items = Item.objects.filter(category=category_name)
    context = {
       'list_items': list_items,
    }
    return render(request, 'inventory/item_list.html', context)

我的庙宇:

{% for item in list_items %}
       <tr>
           <td>{{ forloop.counter }}</td>
           <td>{{ item.name }}</td>
           <td>{{ item.category }}</td>
           <td>{{ item.is_active }}</td>
           <td><a href="{% url 'item_delete' item.pk %}">Delete</a></td>
           <td><img src="{{ item.model_pic.url }}" alt="Photo"></td>
        </tr>
 {% endfor %}

输出:enter image description here

2 个答案:

答案 0 :(得分:0)

如果在开发过程中发生了这种情况,请确保将您的应用程序配置为可以提供媒体服务。更新您的网址配置。例如:

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

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

有关更多信息,请参见:

https://docs.djangoproject.com/en/2.1/howto/static-files/#serving-files-uploaded-by-a-user-during-development

如果已配置,请检查文件的源以查看正在显示的内容。正在显示“照片”,因为网络浏览器无法找到图像。

答案 1 :(得分:0)

def item_list(request, category_id):
    category_name = Category.objects.get(pk=category_id)
    list_items = Item.objects.filter(category=category_name)
    context = {
       'list_items': list_items,
    }
    return render(request, 'inventory/item_list.html', context)

在这里上下文字典将被附加到相应的URL item_list.html

在设置中,一旦完成,您必须去除静态参数; 在item_list.html中。您必须使用{%static%} 然后遍历上下文元素。 在

 <img src="{% static variable %}" %}>