Une chose apparemment simple que je rencontre est de rendre une simple liste de fichiers statiques (disons le contenu d'un seul répertoire de référentiel sur mon serveur) sous la forme d'une liste de liens. Que ce soit sécurisé ou non est une autre question, mais supposons que je veuille le faire ... Voilà à quoi ressemble mon répertoire de travail. Et je veux lister tous les fichiers du dossier Analytics dans mon modèle, en tant que liens.Django. Liste des fichiers d'un dossier statique
J'ai essayé d'accéder à des fichiers statiques dans view.py suivant quelques tutorial et ayant comme ça:
view.py
from os import listdir
from os.path import isfile, join
from django.contrib.staticfiles.templatetags.staticfiles import static
def AnalyticsView(request):
mypath = static('/analytics')
allfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
return render_to_response('Rachel/analytics.html', allfiles)
Et mon modèle:
<p>ALL FILES:</p>
{% for file in allfiles %}
{{ file }}
<br>
{% endfor %}
Et mes paramètres.py
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
Et je reçois l'erreur:
FileNotFoundError at /analytics/
[WinError 3] The system cannot find the path specified: '/analytics'
Erreur traceback Toute aide sera très appréciée
Je pense que vous avez mal lu le tutoriel. '' 'static''' va générer une URL pour une ressource statique, pas le chemin du fichier. Donc, vous devriez probablement traverser votre système de fichiers et appeler statique pour chaque fichier pour générer le lien, que vous devriez mettre dans la page Web –