2011-08-12 3 views
4

私は自分のウェブサイトで画像ギャラリーアプリケーションを使用しています。現在、私はディレクトリに画像ファイルをドロップし、各画像のimg htmlタグを手動で書き込んでいます。 djangoがディレクトリ内のファイルのリストを自動的に作成し、json出力をギャラリーアプリに送ることができるので、javascriptを使って各画像ファイルに対して<img>要素を生成することができます。あるいは、ギャラリーアプリがリクエストされたときに、ディレクトリ内の各ファイルに対して<img>の要素を自動的に生成するようにdjangoを直接作ることができます。Django:ディレクトリ内のファイルのリストを自動生成

+1

はい、可能です。 DjangoはPythonであるため、Pythonアルゴリズムを使用してディレクトリ内のファイルのリストを作成し、それを使用して要素を生成するか、または 'for'テンプレートタグを使用して実行できます。 – Dracontis

答えて

14

ここでのコードのビットは、あなたのためです:

views.py

import os 

def gallery(request): 
    path="C:\\somedirectory" # insert the path to your directory 
    img_list =os.listdir(path) 
    return render_to_response('gallery.html', {'images': img_list}) 

gallery.html

{% for image in images %} 
<img src='/static/{{image}}' /> 
{% endfor %} 
3
import os 
from django.conf import settings 
from annoying.decorators import ajax_request 

@ajax_request 
def json_images(request, dir_name): 
    path = os.path.join(settings.MEDIA_ROOT, dir_name) 
    images = [] 
    for f in os.listdir(path): 
     if f.endswith("jpg") or f.endswith("png"): # to avoid other files 
      images.append("%s%s/%s" % (settings.MEDIA_URL, dir_name, f)) # modify the concatenation to fit your neet 
    return {'images': images} 

この機能は、すべての画像を含むJSONオブジェクトを返しますMEDIA_ROOT内のディレクトリ。

django-annoyingパッケージが必要です。

関連する問題