【问题标题】: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:我知道 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里见过这种例子}

【问题讨论】:

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


    【解决方案1】:
    'extra_content':{'item_list':Item.objects.all()}
    

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

    【讨论】:

    • @eagertoLearn:我实际上不确定。我只是一个 lambda,但试试你的方法,看看会发生什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 2010-09-29
    • 2022-12-20
    • 2018-09-25
    • 1970-01-01
    • 2011-08-12
    相关资源
    最近更新 更多