簡體   English   中英

姜戈。 列出靜態文件夾中的文件

[英]Django. Listing files from a static folder

我遇到的一個看似基本的事情是將一個簡單的靜態文件列表(比如我的服務器上單個存儲庫目錄的內容)呈現為鏈接列表。 這是否安全是另一個問題,但假設我想這樣做......這就是我的工作目錄的樣子。 我想在我的模板中列出來自分析文件夾的所有文件,作為鏈接。

在此處輸入圖片說明
我嘗試按照一些教程訪問 view.py 中的靜態文件,並像這樣:

查看.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'

錯誤回溯任何幫助將不勝感激

遇到了類似的問題,並使用 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/...', ...]

我沒有 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 %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM