2011-11-29 13 views
1

イメージギャラリーページ用のテンプレートを生成しています。Django - ファイル名のリストをテンプレートにレンダリングする

  • ホストは、画像のサブディレクトリからの画像は
    • は、画像フォルダがビューにリストを渡す
  • ギャラリーのタイトルと同じ題しされるフォルダ次のように私のアプローチがありますテンプレートは、リストをループし、IMGタグ

だから私のVIEを作成するテンプレート

  • にファイル名のワットは、私はに実行している問題は、私はos.listdir機能を使用しようとすると、Djangoは500エラーを入れているということです

    .... 
    {% for file in files %} 
        <img src="/path/to/images/{{ title }}/{{ file }}"> 
    {% endfor %} 
    .... 
    

    def some_gallery(request): 
        #LOGIC TO GET A LIST OF FILENAMES 
    
        variables = RequestContext(request,{ 
         'user' : request.user, 
         'title' : 'something', 
         'files' : fileList 
        }) 
        return render_to_response('gallery_template.html',variables) 
    

    、テンプレートになります。私は必要なファイルリストをどのように入手できますか? 500エラーに

    def some_gallery(request): 
    
        variables = RequestContext(request,{ 
         'user' : request.user, 
         'title' : 'something', 
         'files' : os.listdir('/path/to/gallery') 
        }) 
        return render_to_response('gallery_template.html',variables) 
    

    を与えているビューの

    問題のあるバージョンはまた、私は、ファイルパスが作業を行うことに注意しなければならないので、私はURLに直接行けば予想通り、私は画像を取得します。

    EDIT:「:」は「=」の代わりに、コードサンプル

  • +0

    使用しているOSとWebサーバーは? –

    +0

    スローされるエラーメッセージは何ですか?それはおそらく何がうまくいかないと言うでしょう。 'listdir'はWindowsとUnixのようなシステムでうまくいくはずなので、あなたがどのように使っているかに問題があるでしょう。 –

    +0

    私は許可の問題に遭遇し、Webサーバーを介してエラーメッセージを受け取りました。 –

    答えて

    2

    私はそれが整理ました。私のメソッドは正しかったので、このタイプのものを探している人は、コードサンプルがうまくいくはずです。

    問題は、提供されたファイルパスにアクセスする際のいくつかの問題が原因で、Djangoがlistdir関数呼び出しをトリプルしていたことです。私は、ディレクトリのアクセス許可とパスが正しいことを確認し、それは働いた。

    助けてくれてありがとう。

    +0

    うれしいです。 –

    2

    を使用しているので、あなたの辞書には、有効なPythonのコードではありませんでタイプミスを修正しました。それは次のようになります。

    variables = RequestContext(request,{ 
        'user' : request.user, 
        'title' : 'something', 
        'files' : os.listdir('/path/to/gallery') 
    }) 
    

    最後に一つ、LISTDIRはabosulteパスを期待し、あなたとあなたのプロジェクトのルートパスを取得することができます:

    ROOT_PATH = os.path.abspath(os.path.dirname(__file__).decode('utf-8')).replace('\\', '/') 
    
    +0

    os.listdir()は絶対パスを必要としません。それは何かへの道である限り、どんな道でもあり得る。 –

    +0

    "="は投稿の入力ミスで、なぜ私がそれをしたのか、笑。私は ":"演算子を使っています。第二に、Pythonシェルを実行すると、os.listdirは正常に動作しています。ちょうどDjangoビューではありません – jyore

    関連する問題