私はちょうどPythonを学んでいます& Django。ディレクトリファイルの内容をDjangoテンプレートに表示
私が問題を抱えていると思われるものは、静的なファイルの単純なリストをレンダリングすることです(私の上の単一のリポジトリディレクトリの内容を言います)。サーバー)をダウンロード可能なリンクのリストとして表示します。 がPython directory list returned to Django template
このコードスニペットは、「myfilesという」でファイル名を出力します。これは安全であるかどうかは、
この投稿は、正しい方向に私を操縦助けた...別の質問ですが、私はそれをしたいと仮定しますプロンプトから実行した場合:
path= os.path.dirname(os.path.abspath(__file__))
myfiles = os.path.join(path, 'myfiles')
os.chdir(myfiles)
for files in os.listdir("."):
print files
しかし、これらのファイルをDjangoテンプレートに渡してリンクのリストを生成するにはどうすればよいですか?私はそれがテンプレート変数として渡し、forループでレンダリングするiterableにするいくつかの並べ替えのPython辞書/タプルを作成する必要がありますと思う?
この作業を行うには、urls.pyファイルにエントリを追加する必要がありますか?このようなもの?
(r'^myfiles/(?P<path>.*)$', 'django.views.static.serve', {'document_root': os.path.join(os.path.dirname(__file__), 'myfiles'), 'show_indexes': True}),
ありがとうございました!私はちょうど学んでいるし、私は実際にどのように既存のコードスニペットからこれを行うには分かりませんでした。
EDIT:これは私が私のviews.pyに持っているものです:
def myfiles_page(request):
path = os.path.dirname(os.path.abspath(__file__))
myfiles = os.path.join(path, 'myfiles\\')
os.chdir(myfiles)
x = 0
d = {}
for file in os.listdir("."):
d[x] = (myfiles + file)
x = x + 1
variables = RequestContext(request, {
'user' : request.user,
'filedict' : d,
})
return render_to_response('myfiles_page.html', variables)
これは私どのようです(私はWindowsシステムによ「\\」からわかります)
{% for key, value in filedict %}
{{ key }}: {{ value }}
{% endfor %}
(
Django documentationによる) しかし、「filedictは」まだテンプレートには何も表示されていない:それは、テンプレートに表示する取得しようとしていました。何か案は?
+1大規模なセキュリティに関する警告です。 –
応答のためにありがとうSpacedman - しかし、私にとっては最も難しい部分は実際には、それぞれのdictは名前とURLを持っているos.listdirからdictsのリストを構築するviews.py関数を書いています。私はそれが基本だが、そこに任意のアイデアを知っている?私が終わった何 – fieryred
:DEF create_filedict(ディレクトリ):os.listdir(ディレクトリ)で ファイルの\t X = 0 \t D = {} \t: \t \t D [X] =(ファイル) \t \t x = x + 1 \t return {'dict':d、 'size':x} – fieryred