2016-07-21 3 views
0

Я новичок в Django и не использовал Python в течение некоторого времени. Я пытаюсь, чтобы Django извлекал файлы из каталога, создавал элемент списка, а затем создавал гипер ссылку на местоположение этого файла. До сих пор это, как я определил это в моих просмотрах:django создать ссылки из содержимого каталога

def docs(request): 
     root="/Users/user" 
     workingDir="files" 
     Path=os.path.join(root, workingDir) 
     os.chdir(Path) 
     files=os.listdir(".") 
     dirListUrls=[] 
     for file in files: 
      dirListUrls.append(os.path.join(root, workingDir, file) 

     directoryList={'dirList': {'files': files, 'dirListUrls': dirListUrls} 
     return render(request, 'mySite/documents', directoryList) 

В моем шаблоне выглядит следующим образом:

{% for item in dirList.files} 
    <li><a href="#">{{ item }}</a></li> 
{% endfor %} 

Я хотел бы создать словарь, который может быть доступен в следующем виде:

{% for item in dirList %} 
    <li><a href="{{ dirList.url }}">{{ dirList.file }}</a></li> 
{% endfor %} 

Заранее спасибо.

+0

Для меня это звучит как вы пытаетесь служить либо статические или медиа-файлов. Взгляните на документацию, как это сделать: https://docs.djangoproject.com/en/1.9/howto/static-files/ https://docs.djangoproject.com/en/1.9/topics/files/ – fodma1

ответ

0

Вы можете использовать zip.

def docs(request): 
    ... 
    context = {'dirList': zip(files, dirListUrls)} 
    return render(request, 'mySite/documents', context) 

и

{% for item in dirList} 
    <li><a href="#{{ item.1 }}">{{ item.0 }}</a></li> 
{% endfor %} 
+0

Функция zip работала для того, что мне было нужно, спасибо. – tonryray

+0

@tonryray Если мой ответ решил вашу проблему, вы можете принять его так: http://stackoverflow.com/help/someone-answers –