2015-11-19 67 views
0

我有過保存圖像,並返回文件名作爲關鍵字和文件日期爲值的字典文件系統的目錄遍歷視圖代碼:提取鍵/值信息

def export_dir(request): 
    user = request.user 
    path = '/Users/darius/Desktop/archive/111715/large/' 
    file_arr = os.listdir(path) 
    records = {} 

    for item in file_arr: 
     date = os.stat(os.path.join(path + item)).st_mtime 
     filetime = time.ctime(os.stat(os.path.join(path + item)).st_mtime) 
     if item.startswith('.'): 
      continue 

     records[item] = filetime 

    variables = RequestContext(request, { 'user': user, 'records': records }) 
    return render_to_response("b5/export.html", variables) 

我怎麼解壓數據在模板中?目前,我正在使用自定義模板過濾器:

from django.template.defaulttags import register 
... 
@register.filter 
def get_item(dictionary, key): 
    return dictionary.get(key) 

和我的模板標籤是這樣的:

{% for record in records %}        
<tr> 
    <td>{{ record|get_item:item.filename }}</td> 
</tr> 
{% endfor %} 

,但我不能讓過去......

VariableDoesNotExist at /export/ 
Failed lookup for key [item] in "[{'False': False, 'True': True, 'None': None}, {'records': {'3950_14064_9205_042_large_02.jpg': 'Tue Nov 17 22:26:23 2015', '5920_14009_1851_000_large_02.jpg': 'Tue Nov 17 20:14:34 2015', '0520_15129_0015_907_large_02.jpg': 'Tue Nov 17 21:05:22 2015', '4130_10343_2096_016_large_03.jpg': 'Mon Nov 16 17:17:46 2015’,.. 

是什麼我在模板中需要的語法來訪問字典數據,或者,我該如何修改我的視圖代碼?

+0

從哪裏獲得'item.filename'?你不會將任何'item'傳遞給模板。 – pythad

+0

只需將其更改爲 {{record | get_item:record.filename}} – Nick

回答

0

相反的鍵,你只需調用值()您的記錄方法獲取值的字典模板

{% for file_date in records.values %}        
<tr> 
    <td>{{ file_date }}</td> 
</tr> 
{% endfor %} 

或者,如果你需要這兩個鍵和值使用的物品的方法

{% for file_name, file_date in records.items %}        
<tr> 
    <td>{{ file_date }}</td> 
</tr> 
{% endfor %} 
0

有在您的字典中沒有名爲filename的鑰匙。 您應該創建一個列表,如下所示:

records_list = [] 

for item in file_arr: 
    record = {} 
    date = os.stat(os.path.join(path + item)).st_mtime 
    filetime = time.ctime(os.stat(os.path.join(path + item)).st_mtime) 
    if item.startswith('.'): 
     continue 

    record['filename'] = filename 
    record['filedate'] = filetime 
    records_list.append(record)