我有一个视图代码,它遍历一个保存图像的文件系统目录,并返回一个字典,其中文件名为键,并以值的形式提交:
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 :(得分:0)
不是按键获取值,而是可以在模板中调用记录dict的values()方法
{% 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 %}
答案 1 :(得分: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)