我不確定爲什麼這個模板沒有渲染任何內容到頁面。 有什麼明顯的我在這裏失蹤?在Django模板中使用詞典的循環問題
查看:
@user_passes_test(is_staff)
def details_activity_log(request, project_id, template='projects/details_activity_log.html'):
project = get_object_or_404(Project.objects.select_related(), pk=project_id)
action_log = project.projectactionlog_set.all()
log_group = defaultdict(list)
for log in action_log:
log_group[log.action_time.strftime('%y%m%d')].append(log)
#import pdb; pdb.set_trace()
return render_to_response(template, {
'log_group' : log_group,
'project' : project,
'action_log' : action_log,
'tab_5' : 'active',
}, context_instance=RequestContext(request))
log_group包含字典模型對象,像這樣:
defaultdict(<type 'list'>, {'110614': [<ProjectActionLog: ProjectActionLog object>, ...]})
模板:
{% for key, log in log_group %}
{% for action in log %}
{{ action }}
{{ action.action_time }}
{{ action.user.first_name }}
{{ action.message }}
{{ action.object_name }}
{% endfor %}
{% endfor %}
編輯 如果我已經看過文檔,我會看到答案。 https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#for
但是,這是一個棘手的情況,因爲當循環無法解壓迭代器項目時,模板不會拋出任何運行時錯誤。
您使用的是'defaultdict',小心!看到我的答案如下或http://stackoverflow.com/questions/4764110/django-template-cant-loop-defaultdict – Stefano