2017-10-11 5 views
1

私が問題を抱えている基本的なことの1つは、静的ファイルの単純なリスト(私のサーバ上の単一のリポジトリディレクトリの内容)をリンクのリストとしてレンダリングすることです。これが安全であるかどうかは別の質問ですが、私はそれをしたいと考えています... それは私の作業ディレクトリの様子です。そして私はリンクとして、私のテンプレートのanalyticsフォルダのすべてのファイルをリストしたいと思います。Django。静的フォルダからファイルをリスト表示する

enter image description here
私はいくつかの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"), 
] 

と私はエラーを取得しています:すべてのヘルプは非常に

+0

私はあなたがチュートリアルを読み違えると思います。 '' 'static'''はファイルパスではなく静的リソースのURLを生成します。だからおそらく、あなたのファイルシステムをトラバースし、リンクを生成するために、各ファイルのための静的を呼び出す必要がありますあなたは、Webページに入れてください –

答えて

1

それは動作します!ここでは、より良いアプローチです:

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 %} 
0

を理解されるであろう

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

エラーtraceback 私はこれを試してみたが、(のようなものを)しようとするジャンゴの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) 
+0

貢献、ありがとう、アレックス。私は試しましたが、それでも私には同じエラーが表示されました。 "静的"とその行について議論 "allfiles = [静的(f)for listdir(mypath)if isfile(join(mypath、 f))] " –

+0

これはおそらく、あなたが' 'mypath'''値を置き換えなかったためです。 –

関連する問題