0

我偶然发现了 Django 的 RequestContext 事情的愚蠢情况。这是我的问题:

我将所有图像存储在我的媒体/上传文件中。在我的模板中,我只是使用:

{% for photo in photos %}
  <a href="#"> <img src="{{gallery_root}}/{{photo.get_name}}" /></a>
{% endfor %}

我的观点是:

def gallery_view(request):
    photos = Photo.objects.all()
    return render_to_response('gallery/sampleGallery.html',{'photos':photos},context_instance=RequestContext(request))

在我的设置文件中:

GALLERY_ROOT = os.path.join(MEDIA_ROOT, "media/uploads")

我有一个上下文处理器文件,其中包含:

from django.conf import settings

def gallery_root(request):
    return {'gallery_root':settings.GALLERY_ROOT}

当我打开我的模板时,出现了图像的路径,但是服务器给出了 404,路径似乎正确但 django 无法为它们提供服务。那么我在模板上看不到图像的原因是什么?

图像源如下所示:

<a href="#"> <img src="/Users/imperium/Desktop/sample/media/uploads/popo.jpg" /></a>  
4

2 回答 2

1

嘿,这可能是您的媒体没有得到适当的服务。在您的 urls.py 文件中尝试类似的操作。

# if we're in DEBUG mode, allow django to serve media
# This is considered inefficient and isn't secure.
from django.conf import settings
if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve',
         {'document_root': settings.GALLERY_ROOT}),
    )
于 2011-02-23T19:55:21.053 回答
1

MEDIA_ROOT是媒体的文件系统路径,而不是 URL 路径。基于 mongoose_za 的建议,您的模板应如下所示:

{% for photo in photos %}
  <a href="#"> <img src="/media/{{photo.get_name}}" /></a>
{% endfor %}

Of course, you can define a new constant in settings.py which corresponds to the URL root you've chosen, and use this both in urls.py as well as in your templates.

于 2011-02-23T20:07:54.807 回答