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

そして、次を含む contextprocessor ファイルがあります。

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

MEDIA_ROOTURL パスではなく、メディアへのファイル システム パスです。mongoose_za からの提案に基づいて構築すると、テンプレートは次のようになります。

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

もちろん、settings.py選択した URL ルートに対応する新しい定数を定義して、これをurls.pyテンプレートだけでなくテンプレートでも使用できます。

于 2011-02-23T20:07:54.807 に答える
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 に答える