0

图片可以上传到位于 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"/>

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

4

2 回答 2

1

鉴于:

MEDIA_URL = '/media/'

以及以下模板代码:

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

图像src不可能是/upload/Desert.jpg。路径应该以/media/. 很可能MEDIA_URL是 undefined 并且值picis upload/Desert.jpg。如果是这种情况,那么您可能缺少媒体模板上下文处理器。更改TEMPLATE_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))

如果您使用的是 Django 1.3+,您可以使用该render方法,它会自动为您执行此操作:

return render('template.html', { ... context here ... })
于 2012-06-05T18:44:05.140 回答
0

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

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

而不是django.core....我用django.template....

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'django.template.context_processors.media',
)
于 2020-05-06T11:59:22.193 回答