图像无法在html中显示。我在models.py中编写了代码
class POST(models.Model):
title = models.CharField(max_length=100)
image = models.ImageField(upload_to='images/', blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
在views.py中
def top(request):
content = POST.objects.order_by('-created_at')[:5]
return render(request, 'top.html',{'content':content})
在top.html中
<div>
{% for item in content %}
<div>
<h2>{{ item.title }}</h2>
<img src="{{ item.image }}"/>
</div>
{% endfor %}
</div>
当我在浏览器中访问时,会显示html.<h2>{{ item.title }}</h2>
显示但<img src="{{ item.image }}"/>
不存在。当我在GoogleChrome中看到页面源时,会显示<img src="/images/photo.jpg"/>
。但是当我点击网址时,发生404错误。我的应用程序有图像/图像文件夹,在图像文件夹中肯定我上传的图片在那里。我真的不明白为什么会这样。我在settings.py中写了MEDIA_ROOT和MEDIA_URL所以我认为图像是在浏览器中显示。我该怎么解决这个问题?
确保您的/ images文件夹可以在Django中访问。完成它的一个简单方法是在settings.py中添加“images”文件夹。喜欢:
IMAGE_URL = '/images/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "images"),
'/images/',
]
然后在您的html文件中,在顶部添加{%load images%}。
首先确保在项目网址文件中包含这些行
# Your imports ....
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [.......]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
并在您的模板中使用
{{ item.image.url }}
使用相对文件夹:
<img src=".{{ item.image }}"/>
导致
<img src="./images/photo.jpg"/>
并检查上传是否有效,图像是否存在。
试试这个:<img src="/image{{ item.image }}"/>
/:表示“根”
。 :表示“当前目录”
因此,如果您的根应用程序具有图像文件夹,则需要使用/ image启动路径