在 django 的 urlconf 中传递 lambda 是啥意思?
Posted
技术标签:
【中文标题】在 django 的 urlconf 中传递 lambda 是啥意思?【英文标题】:what does passing lambda in urlconf in django mean?在 django 的 urlconf 中传递 lambda 是什么意思? 【发布时间】:2014-04-27 19:11:09 【问题描述】:我在Djangobook
中遇到了这个code
。我无法理解这是什么意思。
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里见过这种例子
【问题讨论】:
【参考方案1】:'extra_content':'item_list':Item.objects.all()
将在加载 URLconf 时进行评估,因此 item_list
将包含每个请求的相同项目。使用 lambda 告诉 Django 为每个请求调用该 lambda,这意味着 items_list
将随着新的 Items
在数据库中的添加、删除或编辑而改变。
【讨论】:
@eagertoLearn:我实际上不确定。我只是一个 lambda,但试试你的方法,看看会发生什么。以上是关于在 django 的 urlconf 中传递 lambda 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
在测试期间,如何覆盖 urlconf 中使用的 Django 设置?