姜戈。列出静态文件夹中的文件
Django. Listing files from a static folder
我遇到的一个看似基本的问题是将一个简单的静态文件列表(比如我服务器上单个存储库目录的内容)呈现为链接列表。这是否安全是另一个问题,但假设我想这样做......
这就是我的工作目录的样子。我想在我的模板中列出来自分析文件夹的所有文件,作为链接。
我试过在 view.py 中访问一些 tutorial 中的静态文件,并且是这样的:
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 env 来尝试这个,但是试试(类似的)这个:
def AnalyticsView(request):
mypath = 'static'
allfiles = [static(f) for f in listdir(mypath) if isfile(join(mypath, f))]
return render_to_response('Rachel/analytics.html', allfiles)
有效!这是一个更好的方法:
import os
def AnalyticsView(request):
path="E:\Development\Information_Access_Project\Information_Access_Project\static\analytics" # insert the path to your directory
analytics_list =os.listdir(path)
return render_to_response('Rachel/analytics.html', {'analytics': analytics_list})
并在模板中
{% for analytic in analytics %}
<a href="/static/analytics/{{ analytic }}">{{ analytic }}</a>
<br>
{% endfor %}
遇到类似问题并使用 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/...', ...]
我遇到的一个看似基本的问题是将一个简单的静态文件列表(比如我服务器上单个存储库目录的内容)呈现为链接列表。这是否安全是另一个问题,但假设我想这样做...... 这就是我的工作目录的样子。我想在我的模板中列出来自分析文件夹的所有文件,作为链接。
我试过在 view.py 中访问一些 tutorial 中的静态文件,并且是这样的:
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 env 来尝试这个,但是试试(类似的)这个:
def AnalyticsView(request):
mypath = 'static'
allfiles = [static(f) for f in listdir(mypath) if isfile(join(mypath, f))]
return render_to_response('Rachel/analytics.html', allfiles)
有效!这是一个更好的方法:
import os
def AnalyticsView(request):
path="E:\Development\Information_Access_Project\Information_Access_Project\static\analytics" # insert the path to your directory
analytics_list =os.listdir(path)
return render_to_response('Rachel/analytics.html', {'analytics': analytics_list})
并在模板中
{% for analytic in analytics %}
<a href="/static/analytics/{{ analytic }}">{{ analytic }}</a>
<br>
{% endfor %}
遇到类似问题并使用 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/...', ...]