django中urlconf中传递lambda的意思是什么?

时间:2014-03-20 18:02:07

标签: django lambda django-urls django-generic-views url-pattern

我在code中遇到了这个Djangobook。我无法理解这意味着什么。

urlpatterns=pattern('django.views.generic',
                   url(r'^$','simple.direct_to_template',
                   kwargs={
                         'template':'index.html',
                         'extra_content':{'item_list':lambda:Item.objects.all()}
                          }
                   )

在模板中,简单的迭代来显示项目

{% for item in item_list %}

上述网址中lambda的目的是什么?

P.S:我知道lambdapython (anonymous function)中是如何运作的。但我想知道它在这里服务的目的。为什么没有'extra_content':{'item_list':Item.objects.all()},因为无论如何都会产生iterable

编辑:

如果我有

info_dict={'queryset':Item.objects.all()}

并将此dict传递给extra_content

'extra_content':{'item_list':queryset}

是否与lambda相同(我在djangobook中看过这种例子)

1 个答案:

答案 0 :(得分:1)

'extra_content':{'item_list':Item.objects.all()}
加载URLconf时将评估

,因此item_list将包含每个请求的相同项目。使用lambda告诉Django为每个请求调用lambda,这意味着items_list将随着在数据库中添加,删除或编辑新Items而改变。