2010-07-12 5 views
0

Depuis ma dernière question: Python images displayimages Python Django afficher

Je compris que de toutes les réponses que je suis le glob.glob pourrait être le seul dans le sens que j'ai besoin.

Cependant où je suis coincé droit est ici maintenant:

Je peux créer une liste avec tous les noms de fichiers dans mon répertoire média en utilisant glob.glob:

all = glob.glob("/Path_to_MEDIA/*/*.jpg") 

Mais comment puis-je utiliser cette et créez un affichage d'image TRÈS SIMPLE avec un bouton suivant qui appelle les fichiers dans mon MEDIA_ROOT et les affiche.

Ce que je sais est:

  1. J'ai un modèle qui ressemble à l'index de répertoire par défaut:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
        <head> 
        <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 
        <meta http-equiv="Content-Language" content="en-us" /> 
        <meta name="robots" content="NONE,NOARCHIVE" /> 
        <title>Index of {{ directory }}</title> 
        </head> 
        <body> 
        <h1>Index of {{ directory }}</h1> 
        <ul> 
         {% ifnotequal directory "/" %} 
         <li><a href="../">../</a></li> 
         {% endifnotequal %} 
         {% for f in file_list %} 
         <li><a href="{{ f|urlencode }}">{{ f }}</a></li> 
         {% endfor %} 
        </ul> 
        </body> 
    </html> 
    
  2. Je dois créer un def dans mes vues qui alimente la liste de glob.glob à ce modèle ou similaire.

Ce que je ne sais pas:

  • Comment cette définition dans la vue ont pour ressembler?

Et ici:

  • Que dois-je écrire pour afficher une image, le son dans un navigateur?
  • Que dois-je écrire pour afficher une LISTE d'images, de sons?

Merci pour le temps!

Répondre

0

Faire une url directe à modèle avec contexte supplémentaire dans urls.py:

from django.views.generic.simple import direct_to_template 
... 
url(r'^whatever', direct_to_template, 
       { 'template':'foo.html', 'extra_context': {'files':myfiles} } 
       name='whatever'), 

myfiles ci-dessus est une liste/tuple de vos fichiers. Cependant, veillez à formater votre liste de fichiers en termes de MEDIA_URL au lieu de basé sur MEDIA_PATH. Par exemple:

myfiles = [ 'relative/path/foo.jpg', 
      'http://static.mysite.com/absolute/path/bar.jpg' ] 

Bien évidemment généré à partir du système de fichiers dans votre cas, pas une liste hardcoded. Et vous pouvez faire le travail dans une vue plutôt que d'utiliser directement à un modèle - il suffit de mettre la clé des fichiers/valeur dans votre contexte:

def myview(request ...): 
    context = RequestContext(request) 
    context[files]=myfiles 
    return render_to_respone(..., context_instance=context) 

Ensuite, dans votre modèle foo.html :

{% for file in files %} 
    <img src='YOUR_MEDIA_URL_HERE/{{ file }}' /> 
{% endfor %} 
+0

Merci! Intéressant. Et où sont spécifiés mes fichiers? Dans un Model.py, views.py, def dans une vue, modèle? – MacPython

+0

le bloc supérieur est dans urls.py, donc myfiles peut être rempli à partir de là aussi. Je fais cela pour un blog, où les «meilleures histoires» sont calculées, car elles sont partagées entre plusieurs vues.Cependant, vous pouvez le mettre ailleurs et l'appeler ici. ou, si vous le souhaitez, vous pouvez écrire votre propre point de vue au lieu de faire le point de vue générique, et assurez-vous simplement d'ajouter la clé/valeur du fichier à votre contexte. – eruciform