当我尝试从媒体根提供服务时,我收到了这张图片。请您......不要向我显示文档或之前问题的链接。我已经尝试过那些东西,但我仍然得到了这个破碎的图像。
Models.py:
class BasicModel(models.Model):
name = models.CharField(max_length=200)
dob = models.DateField()
photo = models.ImageField(upload_to='sample')
class BasicModelForm(ModelForm):
class Meta:
model = BasicModel
Views.py:
def BasicView(request):
if request.method == 'POST':
form = BasicModelForm(request.POST, request.FILES)
if form.is_valid():
data = form.save()
return preview(request, data.id)
else:
form = BasicModelForm()
return render_to_response("unnamed.html", {'form': form}, context_instance=RequestContext(request))
def preview(request, id):
obj = get_object_or_404(BasicModel, pk=id)
return render_to_response("preview.html", {'obj': obj})
Settings.py:
MEDIA_ROOT = '/home/nirmal/try/files/'
MEDIA_URL = 'http://localhost:8000/files/'
Urls.py:
url(r'^unnamed/$', 'unnamed.views.BasicView'),
url(r'^files/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
Preview.html:
<html>
<body>
{{ obj.name }}
{{ obj.dob }}
<img src="{{ MEDIA_URL }}sample/{{ obj.photo }}" />
</body>
</html>
有人可以帮我吗?
谢谢!
答案 0 :(得分:2)
替换:
{{ MEDIA_URL }}sample/{{ obj.photo }}
使用:
{{ object.photo.url }}
作为旁注,您确定在模板中甚至定义了{{MEDIA_URL}}吗?
答案 1 :(得分:1)
我想要记住ImageField表示返回相对于MEDIA_URL
的URL。这意味着您应该在模板中使用以下代码:
<html>
<body>
{{ obj.name }}
{{ obj.dob }}
<img src="{{ MEDIA_URL }}{{ obj.photo }}" />
</body>
</html>
甚至更短,请使用绝对URL路径:
<html>
<body>
{{ obj.name }}
{{ obj.dob }}
<img src="{{ obj.photo.url }}" />
</body>
</html>
提示,在浏览器中查找损坏图像的URL。我想这就像http://localhost:8000/files/sample/sample/xyz.png
。