我试着在一个测试网站上显示图片,我已经做过了
但是现在我已经尝试了三天前的旧的和新的解决方案,并且不断地在我的图像上得到404。我还没有设置任何静态,只是媒体文件。
那是我的models.py
从django.db导入模型
“”
class Produto (models.Model):
nome = models.CharField(max_length=50)
preço = models.DecimalField(max_digits=5, decimal_places=2)
foto = models.ImageField(blank=True, upload_to='media')
def __str__(self):
return '%s %s' % (self.nome, self.foto)“”
我的settings.py
“”
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT = 'JR/JR/static/produtos'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')“”“
我的views.py
from django.shortcuts import render
from.models import Produto
def produtolist(request):
list = Produto.objects.all()
return render(request, 'produtos.html', {'list': list})“”和一张带有错误和路径的图片:错误
和我的模板
<html>
<head>
<meta charset="utf-8">
<title>Produtos</title>
<!-- ------------links -->
<link rel="stylesheet" href="{% static 'style.css' %}"
</head>
<body>
<h1>perdida</h1>
<img src="/media/perdida.jpg" >
<div class="cats">
<ul>
{% for Produto in list %}
<li> {{Produto.nome}} - {{Produto.preço}}</li>
<img src="{{ Produto.foto }}" alt="{{Produto.nome}}" />
{% endfor %}
</ul>
</div>
</body>发布于 2019-05-20 15:00:51
当您在模板中显示媒体(上传)文件时,您需要自己在文件url之前手动添加MEDIA_URL。您可以使用模板标记get_media_prefix来完成这一任务。
{% load static %}
...
<img src="{% get_media_prefix %}{{ Produto.foto }}" alt="{{ Produto.nome }}"/>注意,通过在您的upload_to="media"中添加ImageField,您的图像将被上传到/media/media/目录,因为该上传路径相对于MEDIA_ROOT。
如果需要在多个地方(如for循环中)使用它,请执行以下操作来保存一些python查找:
{% load static %}
{% get_media_prefix as MEDIA_PREFIX %}
{% for Produto in list %}
<img src="{{ MEDIA_PREFIX }}{{ Produto.foto }}"/>
{% endfor %}https://stackoverflow.com/questions/56223121
复制相似问题