Ben sadece Python & Django öğreniyorum. (Buraya katkıda bulunan herkese teşekkürler - bu çok değerli bir kaynak oldu!)Django şablonunda dizin içeriğini listeleme
Sorun yaşadığım temel bir şey, statik dosyaların basit bir listesini oluşturmaktır (benim için tek bir depo dizininin içeriği İndirilebilir bağlantıların bir listesi olarak. Python directory list returned to Django template
Bu kod parçacığı 'myfiles' dosya adlarını verir: Bu güvenli olup olmadığı
Bu mesaj bana doğru yönde yönlendirmek yardımcı ... Başka bir soru ama ben bunu yapmak istiyorum varsayalım bir isteminden çalıştırırsanız:
path= os.path.dirname(os.path.abspath(__file__))
myfiles = os.path.join(path, 'myfiles')
os.chdir(myfiles)
for files in os.listdir("."):
print files
Ama nasıl bir bağlantı listesi Django şablonuna bu dosyaları geçmek ve elde edebilirim? Tekrarlanabilir hale getirmek, bir şablon değişkeni olarak iletmek ve bir for döngüsünde oluşturmak için bir çeşit Python sözlüğü/tuple'ı oluşturmam gerektiğini düşünüyorum.
Bunu yapmak için urls.py dosyasına bir giriş eklemem gerekir mi? Böyle bir şey mi?
(r'^myfiles/(?P<path>.*)$', 'django.views.static.serve', {'document_root': os.path.join(os.path.dirname(__file__), 'myfiles'), 'show_indexes': True}),
Yardımlarınız için teşekkürler! Sadece öğreniyorum ve bunu mevcut kod snippet'lerinden çevrimiçi olarak nasıl yapacağımı anlayamadım.
DÜZENLEME: Bu benim views.py içinde ne var ise:
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)
Bu benim nasıl (eğer ben bir Windows sisteminde değilim '\\' dan göreceksiniz) çalışıyordu bir şablonda gösterilecek almak için: (Django documentation göre)
{% for key, value in filedict %}
{{ key }}: {{ value }}
{% endfor %}
Ama 'filedict' hala şablonda şey görüntülemeden değildir. Herhangi bir fikir?
+1. –
Cevap Spacedman için teşekkürler - ama benim için en zor kısmı aslında her bir dict bir isim ve bir url vardır os.listdir gelen dicts listesini oluşturmak için views.py işlevi yazıyor. Temel olduğunu biliyorum, ama orada herhangi bir fikir var mı? – fieryred
I ile sona: def create_filedict (dizini): \t x = 0 \t d = {} os.listdir dosyasını (dizin) için \t: \t \t d [x] = (dosya) \t \t x = x + 1 \t {'dict': d, 'size': x} döndür – fieryred