图片无法在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&amp; MEDIA_URL所以我认为图像显示在浏览器中。我该如何解决这个问题?
答案 0 :(得分:0)
确保您的/ images文件夹可以在Django中访问。完成它的一个简单方法是在settings.py中添加“images”文件夹。像:
IMAGE_URL = '/images/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "images"),
'/images/',
]
然后在你的html文件中添加{%load images%}。
答案 1 :(得分:0)
首先确保在项目网址文件中包含这些行
# 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 }}
答案 2 :(得分:-1)
使用相对文件夹:
<img src=".{{ item.image }}"/>
导致
<img src="./images/photo.jpg"/>
并检查上传是否有效以及图像是否存在。
答案 3 :(得分:-1)
试试这个:<img src="/image{{ item.image }}"/>
/ :表示&#34; Root &#34;
。:表示&#34; 当前目录&#34;
因此,如果您的根应用程序有图像文件夹,则需要使用/ image
开始路径