0

画像ギャラリーを必要とするサイトの django アプリに取り組んでいます。このサイトは非常にシンプルなので、データベースを使用しないことにしました。ギャラリー部分では、画像フォルダーからすべての画像ファイルを読み取り、ループ内でレンダリングされるテンプレートにそれらを送信するビューにループがあります。

import os
from django.shortcuts import render_to_response

def show_pics(request):
    """sends a list of files to the view"""
    folder = '/static/images'
    files = [os.path.join(folder, f) for f in os.listdir(folder) if '.jpg' in f]
    return render_to_response('gallery.html', { 'files' : files })

そしてテンプレート:

<div id="gallery">
    {% for file in files %}
        <img src="{{ file }}" class="gallery-image" />
    {% endfor %}
</div>

これは開発モードではうまく機能しますが ('/static/' で静的ファイルを提供するように URL を設定しました)、Web サーバーにアップロードすると画像がレンダリングされません。レンダリングされた html を見ると、次のようになります。

<div id="gallery">  </div>

静的 URL - http://mysite.com/static/images/some_image.jpgを介してランダムな画像にアクセスしようとすることで、静的 URL が Web サーバーで機能することを確認しました。css は確実に機能しています (心配しないでください。後で静的ファイル用に別のサーバーを使用します)。おそらく、本番サーバーは python2.5 を実行していますが、私は 2.6 を実行しています (両方とも django 1.1 を使用しています)。何かご意見は?

4

2 に答える 2

2

filesテンプレートでは が空であると想定しても安全です。{{ files }}これは、テンプレートを挿入して印刷内容を確認することで確認できます。ほとんどの場合、何もありません。

ただし、これにはいくつかの問題が考えられます。

folder = '/static/images'
files = [os.path.join(folder, f) for f in os.listdir(folder) if '.jpg' in f]

まず、os.listdir がたどるパスは、ドキュメント ルートからではなく、ファイル システム ルートからのパスです。ls /static/imagesサーバー上で実行すると、何が表示されますか?

マイナーなこととして、私は使用したいと思いますf.endswith('.jpg')

于 2009-11-04T08:13:09.790 に答える
0

ファイルのリストが空であることが原因だと思います。/static/images フォルダーに django アプリからアクセスできることを確認しましたか?

于 2009-11-04T08:19:35.403 に答える