Skip to main content
 首页 » 编程设计

python之Django 。列出静态文件夹中的文件

2025年01月19日31傻小

我遇到的一件看似基本的事情是将一个简单的静态文件列表(比如我服务器上单个存储库目录的内容)呈现为链接列表。这是否安全是另一个问题,但假设我想这样做...... 这就是我的工作目录的样子。我想在我的模板中列出分析文件夹中的所有文件,作为链接。


我试过在一些 tutorial 之后访问 view.py 中的静态文件并拥有它:

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) 

还有我的模板:

<p>ALL FILES:</p> 
{% for file in allfiles %} 
  {{ file }} 
    <br> 
{% endfor %} 

还有我的settings.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"), 
] 

我收到错误:

FileNotFoundError at /analytics/ 
[WinError 3] The system cannot find the path specified: '/analytics' 

错误 traceback 任何帮助将不胜感激

请您参考如下方法:

遇到类似问题并使用 Django 实用程序找到以下解决方案:

from django.contrib.staticfiles.utils import get_files 
from django.contrib.staticfiles.storage import StaticFilesStorage 
 
s = StaticFilesStorage() 
list(get_files(s, location='analytics')) 
# ['analytics/report...', 'analytics/...', ...]