Django图像仅显示在某些页面中

时间:2014-04-26 07:12:19

标签: django

我在django有一些问题, 我可以在index.html中加载图片,但不能在其他模板中加载 为什么会这样? 尝试了很多方法并查看了许多其他帖子,但对我来说不起作用。

这是我的urls.py

urlpatterns = patterns('',
# Examples:
 url(r'^$', 'userboard.views.home', name='home'),

 url(r'^items/(?P<UserBoard_id>\d+)/$','userboard.views.details',name='details'),

 url(r'^upload.html$', 'userboard.views.upload', name='upload'),

 url(r'^items/(?P<UserBoard_id>\d+)/delete.html$','userboard.views.delete',name='delete'),

 url(r'^items/(?P<UserBoard_id>\d+)/edit.html$','userboard.views.edit',name='edit'),

 url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
            {'document_root': settings.MEDIA_ROOT}),

这是我的index.html,它运行正常

<h1> Your Items: </h1>


<ul>
{% for items in ItemList  %}
        <li><a href="/items/{{items.id}}/">
        <img src="{{items.itemImage}}"></a>
        </li>
        <hr />

{% endfor %}
</ul>
    <a href="/upload.html">Add a new item </a>

但这不会加载我的照片

<img src="{{item.itemImage}}">

<h1>{{item.itemName}}<h1>
<h2>{{item.itemDesc}}</h2>
<br /><br/><br/>

<a href="{% url 'delete' item.id %}">Delete this item</a>
<br />
<a href="{% url 'edit' item.id %}">Edit this item </a>

我不确定你是否需要我的意见,这里是

def home ( request) :
ItemList= models.UserBoard.objects.all()
return render_to_response('index.html',{'ItemList':ItemList})


def details(request,UserBoard_id):
try:
    item=models.UserBoard.objects.get(pk=UserBoard_id)
except models.UserBoard.DoesNotExist:
    raise Http404
return render_to_response('details.html' ,{'item':item})

请让我知道我哪里出错或至少给我一个提示,我可以开始搜索。

编辑:

这是我的模特

from django.db import models


class UserBoard(models.Model):
itemName=models.CharField(max_length=100)
itemDesc=models.CharField(max_length=400)
itemImage=models.ImageField(upload_to='../media/pictures')

如果我打印出items.itemImage的值,它会显示这个../media/pictures/d.jpg 两个页面中的值相同,但图像仅显示在1.两个页面的模板位于同一文件夹中。

这是我的settings.py媒体根

MEDIA_ROOT = '/home/rox/Documents/IP/userboard/media/'
MEDIA_URL = 'media/'

问题已解决 非常感谢little_birdie以及其他帮助过的人。 问题是这个。我没有把&#39; /&#39;以前是item.itemImage的前面。

但是,为什么没有/它在index.html中工作而不在其他工作中?

1 个答案:

答案 0 :(得分:1)

信息不够,但我想我知道这里发生了什么。

您正在从item.itemImage获取相对路径,即..它不以斜杠开头,因此浏览器将相对于图像所在页面的网址加载它。

显然,您在图像字段中存储了图像的完整网址路径,例如: 媒体/富/ myphoto.jpg

从/(主页)加载成为'/media/foo/myphoto.jpg'..有效。

底线是,执行此操作:

<img src="/{{item.itemImage}}">