Django在模板中查找字典值并按日期排序

时间:2015-12-16 07:55:10

标签: python django dictionary

我正在使用此视图将字典传递给我的模板 - views.py

def personlist(request, id):
    data = requests.get('http://127.0.0.1:8000/app_name/cities/' + id + '/persons/').json()
    context = RequestContext(request, {
    'persons': data['results'],'count': data['count'],
})
    @register.filter(name='lookup')
    def cut(value, arg):
    return value[arg]
    {{ mydict|lookup:item.name }}

    return render_to_response('template.html', context)

其中test_setresults内的字典。我正在使用此视图以这种方式呈现模板 -

{% for person in persons %}
<a href="{% url 'person_detail' person.id %}"><p>{{person.name}}</p></a>
<p>{{person.test_set}}</p>
{% endfor %}

但是这只显示整个字典值 - [{u'test_name': u'test', u'date': u'2015-12-15T20:57:51.556145Z'}],而我只想要日期。我尝试使用自定义模板尝试使用person.test_set.date,但它无效。

另外,鉴于名称和日期是否有办法创建查找以显示每日/每周/每月添加的名称?

1 个答案:

答案 0 :(得分:1)

您似乎是以错误的方式调用自定义模板。

2.2.1 :007 > user = User.new(name: "", email: "ex@example.com")
 => #<User id: nil, name: "", email: "ex@example.com", created_at: nil, updated_at: nil> 
2.2.1 :008 > user.valid?
 => true 

我还修改了返回值,以便至少在无法找到密钥的情况下返回消息。

您的评论让我意识到test_set不是字典,它是字典的列表。我想你想先迭代这些,然后得到日期

@register.filter(name='lookup')
def cut(value, arg):
    return value.get(arg, '{} not found'.format(arg))

{{ person.test_set|lookup:'date' }}