我只想通过网页上的html图片标记显示我通过管理模块上传的图片。 该图片位于/home/user/work/djcode/media/chicks/blondie.jpg。
以下是我的models.py
的相关部分class Image(models.Model):
model_name = models.CharField(max_length=50)
model_pic = models.ImageField(upload_to='chicks/')
def __unicode__(self):
return self.model_name
这是我的views.py
的相关部分def main(request):
i = get_object_or_404(Image, pk=1)
return render_to_response('polls/main.html', {'image': i}, context_instance=RequestContext(request))
我正在使用的html标签只是
<img src="{{ MEDIA_ROOT }}/{{ image.model_pic.url }}">
来自settings.py,我的媒体根是MEDIA_ROOT ='/ home / user / work / djcode / media'
请注意,变量{{image.model_pic.url}}通过html模板显示“chicks / blondie.jpg”,因此我认为我的图像对象确实已经很好地发送到模板。
有人能帮我一把吗?那会非常有帮助。
非常感谢你的时间!
答案 0 :(得分:7)
您在模板中的图片字段上使用网址功能并不完全正确 - {{ image.model_pic.url }}
应解决此问题。您只需要删除{{ MEDIA_URL }}
位。
你的HTML应该是 -
<img src="{{ image.model_pic.url }}">
查看using files in models上的文档。
如果您仍然遇到问题,那么serving static files.可能会出现问题。在django中提供静态文件会有所不同,具体取决于您是在生产中还是仅使用python manage.py runserver
命令。< / p>
要在开发期间服务器媒体文件(使用python manage.py runserver),请确保您的settings.py中的MEDIA_URL和MEDIA_ROOT正确无误,然后您可以将以下内容附加到您的网址 -
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
# ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
有关如何在生产中提供文件的说明,请查看docs。
答案 1 :(得分:1)
您需要使用{{MEDIA_URL}}或{{STATIC_URL}},选择取决于您在服务器上管理文件的方式。
答案 2 :(得分:0)
尝试执行以下操作:
from django.conf import settings
from django.conf.urls.static import static
from . import views
urlpatterns = [
.....
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)