显示从模型到模板Django的图像

时间:2012-06-05 17:39:56

标签: django image templates

图像可以上传到位于mysite文件中的“upload”文件,这是我的代码  setting.py

MEDIA_ROOT = 'C:/Python26/mysite/upload/media/'
MEDIA_URL = '/media/'

在url.py

urlpatterns = patterns('',

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

在模板中

 <img src="{{MEDIA_URL}}/{{pic}}" alt="Profile Picture" width="200"/>

但是,图像仍然没有在网站上显示,但它确实存储在上传文件中。有人可以帮我吗?感谢

2 个答案:

答案 0 :(得分:1)

假设:

MEDIA_URL = '/media/'

以下模板代码:

<img src="{{MEDIA_URL}}/{{pic}}" alt="Profile Picture" width="200"/>

图片src不可能是/upload/Desert.jpg。路径应以/media/开头。 {},} MEDIA_URL的可能性未定义,pic的值upload/Desert.jpgTEMPLATE_CONTEXT_PROCESSORS。如果是这种情况,那么您可能错过了媒体模板上下文处理器。将TEMPLATE_CONTEXT_PROCESSORS = ( ... 'django.core.context_processors.media', ) 更改为:

MEDIA_URL

这将使您的模板上下文中提供MEDIA_URL。然后,你还需要删除它后面的斜杠,否则你最终会得到两个({{ MEDIA_URL }}/{{ pic }} 带有斜线的结尾),即:

而不是:

{{ MEDIA_URL }}{{ pic }}

使用:

MEDIA_URL

<强>更新

如果仍然没有获得RequestContext的值,那么您可能没有使用RequestContext。您必须在render_to_response中包装视图的上下文,以便模板上下文处理器能够完成它们的工作。

如果您使用的是return render_to_response('template.html', { ... context here ... }, context_instance=RequestContext(request)) ,那么:

render

如果你正在使用Django 1.3+,你可以使用return render('template.html', { ... context here ... }) 方法,它会自动为你做这个:

{{1}}

答案 1 :(得分:0)

在设置中,这对我不起作用

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'django.core.context_processors.media',
)

我使用django.core....代替了django.template....

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'django.template.context_processors.media',
)