从 Django 1.11 开始,render 方法中传递的 context 应该是字典而不是 Context 对象。那么 context.render_context 是如何工作的?

问题描述 投票:0回答:1
django.shortcuts 中的 render() 调用 loader 模块的 render_to_string 方法,该方法通过创建 Template 对象来调用 Template 类的 render 方法。到目前为止,上下文是一本字典。 Template 类中的 render 方法内部,

context.render_context.push_state(self):
这是如何运作的?因为 render_context 是 Context 类的一个属性,它被分配了一个 RenderContext 对象。那么,不是 Context 类实例的 context 如何访问它的属性呢?

python django django-views django-templates
1个回答
0
投票
它只是在调用渲染方法之前初始化 Context 对象

来自来源

render_to_string


# Django < 1.8 accepted a Context in `context` even though that's # unintended. Preserve this ability but don't rewrap `context`. if isinstance(context, Context): return t.render(context) else: return t.render(Context(context, autoescape=self.autoescape))
    
© www.soinside.com 2019 - 2024. All rights reserved.