首页 > 解决方案 > 如何将保存在数据库中的图像渲染为模型的字段

问题描述

我有一个模型

class NewListing(models.Model):
    title= models.CharField(max_length= 20)
    image= models.ImageField(upload_to= "static", default="static/default_image.jpg", null=True)
    description = models.TextField()
    Starting_Bid= models.IntegerField()
    time= models.CharField(max_length= 30)

和模型的形式

class NewListingForm(ModelForm):
    class Meta:
        model= NewListing
        fields= ["title", "image", "description", "Starting_Bid"]

在我的 views.py 中,我希望索引 url 显示所有列表的列表,所以我写了这个

def index(request):
    return render(request, "auctions/index.html", {
        "listings": list(NewListing.objects.all())
            })

这是我的index.html,我尝试在其自己的 div 中显示每个列表

{% for listing in listings %}
        <div>
                <h3> 
                <a href='listings/{{listing.title}}'> {{listing.title}}</a>
                </h3>
                <p>{{listing.description}}</p>
                <img src='static/{{listing.image}}'>
                <p>{{listing.time}}</p> 
            </a>
        </div>
    {% endfor %}

问题是每当我尝试渲染此页面时,我都会得到一个损坏的缩略图而不是图像。我该如何解决?

标签: pythonhtmldjangosqlite

解决方案


假设您有一个存储所有静态文件的静态文件夹,请先加载静态文件

{% load static %}
{% for listing in listings %}
    <div>
            <h3> 
            <a href='listings/{{listing.title}}'> {{listing.title}}</a>
            </h3>
            <p>{{listing.description}}</p>
            <img src="{% static ' listing.image.url' %}" >
            <p>{{listing.time}}</p> 
        </a>
    </div>
{% endfor %}

推荐阅读