我在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:我知道lambda
在python (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中看过这种例子)
答案 0 :(得分:1)
'extra_content':{'item_list':Item.objects.all()}
加载URLconf时将评估,因此item_list
将包含每个请求的相同项目。使用lambda告诉Django为每个请求调用lambda,这意味着items_list
将随着在数据库中添加,删除或编辑新Items
而改变。