Django Context中的context.push()和context.update()之间有什么区别

时间:2018-04-15 20:11:02

标签: python django django-context

从文档中,我了解上下文对象是一个堆栈。那么push()update()对此代码段做了什么?文档中指出push()update()相似,但update()将字典作为参数。那我们为什么要在这里同时使用它们呢?

import django.template
import django.template.loader

def render(name, *values):
    ctx = django.template.Context()
    for d in values:
        ctx.push()
        ctx.update(d)

    t = django.template.loader.get_template(name)
    return str(t.render(ctx))

此外,将上下文对象作为堆栈需要什么?

编辑:我再次浏览了文档,找到了flatten()函数,该函数展平了堆栈中的所有级别,使它们具有可比性。

1 个答案:

答案 0 :(得分:0)

唯一的区别似乎是(也根据tests)将参数传递给调用的方式。更新需要字典,而push需要关键字参数。

关于有用性,文档说:

  

在某些自定义模板中使用Context作为堆栈会派上用场   标签