Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
公共django模板参数_Django_Django Templates - Fatal编程技术网

公共django模板参数

公共django模板参数,django,django-templates,Django,Django Templates,我有10个django路由,它们呈现10个模板。这10个模板使用相同的布局(扩展)。我想为这10条路由发送相同的上下文参数。有没有办法在view.py中设置这些参数而不复制代码? 感谢“可能有效的最简单解决方案”: 或者,如果您有其他特定于每个视图的上下文: def render_common(request, template, extra_context): context = { # set up you context here } con

我有10个django路由,它们呈现10个模板。这10个模板使用相同的布局(扩展)。我想为这10条路由发送相同的上下文参数。有没有办法在view.py中设置这些参数而不复制代码? 感谢“可能有效的最简单解决方案”:

或者,如果您有其他特定于每个视图的上下文:

def render_common(request, template, extra_context):
    context = {
        # set up you context here
        }
    context.update(extra_context) 
    return render(request, template, context)


def viewone(request):
    return render_common(request, "templateone.html", {"foo":"bar"})

另一个解决方案(取决于您的具体用例)可能是编写一组自定义TemplateTag。

是:。是的,我知道这一点,但您认为我应该在view.py中创建一个公共函数,该函数将创建此上下文对象,然后在render()的最后一个参数中调用此函数吗?呃,什么?上下文处理器已经是解决方案,并且会自动为您调用。为什么要手动调用任何内容?上下文处理器很好,但它们会为
TemplateContext
的每次使用而调用。我曾经不得不修复一个项目,其中有人使用和滥用了上下文处理器,以至于我们在生产中出现了巨大的性能问题,而这并不是一个聚会:-/-因此,虽然它可能是正确的解决方案,适用于计算量不高且在整个项目中真正普遍使用的事情,我不想用它们来解决问题。
def render_common(request, template, extra_context):
    context = {
        # set up you context here
        }
    context.update(extra_context) 
    return render(request, template, context)


def viewone(request):
    return render_common(request, "templateone.html", {"foo":"bar"})