姜戈。一直在我的图片上收到 404,不知道我是否设置了正确的路径
Django. keep getting 404 on my images, don't know if i set up the paths right
我正在尝试在测试网站上显示图片,我之前已经做过
但现在我从 3 天前开始尝试了新旧解决方案,并且在我的图像上不断出现 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})
´´´´
以及带有错误和路径的图片:
error
和我的模板
<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>
当您在模板中显示媒体(上传的)文件时,您需要自己在文件 url 之前手动添加 MEDIA_URL
。您可以使用模板标签 get_media_prefix
:
{% load static %}
...
<img src="{% get_media_prefix %}{{ Produto.foto }}" alt="{{ Produto.nome }}"/>
请注意,通过在您的 ImageField
中添加 upload_to="media"
,您的图片将上传到 /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 %}
我正在尝试在测试网站上显示图片,我之前已经做过
但现在我从 3 天前开始尝试了新旧解决方案,并且在我的图像上不断出现 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})
´´´´ 以及带有错误和路径的图片: error
和我的模板
<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>
当您在模板中显示媒体(上传的)文件时,您需要自己在文件 url 之前手动添加 MEDIA_URL
。您可以使用模板标签 get_media_prefix
:
{% load static %}
...
<img src="{% get_media_prefix %}{{ Produto.foto }}" alt="{{ Produto.nome }}"/>
请注意,通过在您的 ImageField
中添加 upload_to="media"
,您的图片将上传到 /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 %}