在Django中提供图片的问题

时间:2011-04-03 21:13:06

标签: python django django-templates

我正在尝试在django中创建我的第一个网站,但我遇到了一个问题。我正在尝试提供图片,但它无法正常工作。我按照以下方式设置:
在settings.py中:

MEDIA_ROOT = 'C:/Users/John/Documents/My Dropbox/Infostuff/filmsite/media/'
MEDIA_URL = 'localhost:8000/static/'  
ADMIN_MEDIA_PREFIX = '/admin-media/'

在urls.py中:

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

在模板页面中看起来像这样:

<img src="{{MEDIA_URL}}{{a.picture.url}}">

它被解析为:

<img src="localhost:8000/static/portrets/0000138_Leonardo_D.jpg">

当我打开html页面时,它不显示图片(我得到了破碎的图片图标)。但是,如果我去查看源并复制上面的URL并将其直接传递到我的浏览器中, 加载图片。我做错了什么?

我正在使用Django 1.2。我还没有使用Apache,因为我首先想让它在开发环境中工作。

PS:这是我第一次在这个网站上提问,如果我做错了,请告诉你。

4 个答案:

答案 0 :(得分:0)

您使用的是什么版本的Django?

您可以发布生成的HTML代码吗?如果在浏览器中复制和粘贴时URL有效,那么它也可能是一个html问题。

你看过这个页了吗?

http://docs.djangoproject.com/en/dev/howto/static-files/

<强>更新

你可以发布模型吗?是a.picture一个图像领域?如果是这样,那么你不需要将MEDIA_URL放在你的img src中,因为它已经是一个绝对的url,它应该已经包含了MEDIA_URL。尝试删除它,看看它是否有效。

<img src='{{a.picture.url}}' />

有关详细信息,请参阅此页。

http://docs.djangoproject.com/en/1.3/ref/models/fields/#django.db.models.FileField.storage

答案 1 :(得分:0)

您的MEDIA_URL应该是'/static/' - 或者,如果必须,'http://localhost:8000/static/'。否则,您的浏览器会将localhost解释为路径的一部分,而不是域。

答案 2 :(得分:0)

使用:

MEDIA_URL = 'http://localhost:8000/static/' 

MEDIA_URL = '/static/' 

答案 3 :(得分:0)

好的,我觉得很蠢...... 我不得不改变

MEDIA_URL = 'localhost:8000/static/' 

MEDIA_URL = 'http://localhost:8000/static/' 

然后我改变了

<img src="{{MEDIA_URL}}{{a.picture.url}}">

<img src="{{a.picture.url}}">

感谢您的时间。