2012-06-05 86 views
0

的图像可以上传到文件“上载”其中位于mysite的文件,这里是我的代码 setting.py显示图像模板Django的

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"/> 

但是,仍没有图像的网站,b显示它确实存储在上传文件中。有人可以帮助我呢?由于

+1

当你的HTML渲染'src'的值是什么? – dm03514

+0

它是Profile Picture
user1334100

+0

这是图像的正确位置 – user1334100

回答

1

考虑:

MEDIA_URL = '/media/' 

而下面的模板代码:

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

图像0​​不可能是/upload/Desert.jpg。路径应该从/media/开始。 MEDIA_URL可能未定义,并且pic的值为upload/Desert.jpg。如果是这种情况,那么你可能会错过媒体模板上下文处理器。更改TEMPLATE_CONTEXT_PROCESSORS到:

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

,这将使你的模板上下文中可用MEDIA_URL。然后,您还需要后,删除斜线,否则你会两个结束(MEDIA_URL以斜线结尾),即:

相反的:

{{ MEDIA_URL }}/{{ pic }} 

用途:

{{ MEDIA_URL }}{{ pic }} 

UPDATE

如果你仍然不是获取的值,那么你可能没有使用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 ... }) 
+0

我做到了,但它出来了Profile Picture
user1334100

+0

谢谢:)我认为{{MEDIA_URL}}上传/,我想知道是否有任何问题与MEDIA_ROOT ='C:/ Python26/mysite/upload/media /' ,但我不明白 – user1334100

+0

看起来像'MEDIA_URL'仍然是未定义的。唯一的另一个可能的问题是你没有使用'RequestContext'。见上面的更新。 –