我是一个 django 初学者,所以我试图理解上下文和上下文处理器的概念。
- 什么是上下文,为什么要使用它?
- 上下文是您需要在模板中使用的值吗?
- 上下文和上下文处理器是否相同?
我会非常感谢您的回复。提前致谢!
我是一个 django 初学者,所以我试图理解上下文和上下文处理器的概念。
我会非常感谢您的回复。提前致谢!
当您使用 Django 模板时,它会被编译一次(并且仅一次)并存储以供将来使用,作为优化。模板可以在双花括号中包含变量名,例如
{{ myvar1 }}
and {{ myvar2 }}
。
Context是一个字典,变量名作为键,它们的值作为值。因此,如果您的上述模板的上下文看起来像:{myvar1: 101, myvar2: 102}
,当您将此上下文传递给模板渲染方法时,{{ myvar1 }}
将在您的模板中替换为101
和。这是一个简单的示例,但真正的 Context 对象是呈现模板的上下文。{{ myvar2 }}
102
至于 ContextProcessor,这是一个稍微高级的概念。您可以在settings.py
文件中列出一些上下文处理器,它们接收一个HttpRequest
对象并返回一个字典(类似于上面的上下文对象)。上下文处理器返回的字典(上下文)被 Django 合并到您(用户)传入的上下文中。
上下文处理器的一个用例是您总是想在模板中插入某些变量(例如,用户的位置可能是候选者)。无需编写代码将其插入每个视图,您只需为其编写一个上下文处理器并将其添加TEMPLATE_CONTEXT_PROCESSORS
到settings.py
.
希望这是有道理的。感谢您上课!
上下文是传递给模板的变量名->变量值映射。
上下文处理器允许您指定在每个上下文中自动设置的许多变量——而无需在每个render()调用中指定变量。
官方文档Context
中对此进行了很好的描述。简而言之:
在日常使用中,主要是间接的,因为辅助函数Context
为您构建
见 1.:只有在使用低级 api时才需要它
不,上下文处理器是一个函数,它接受一个请求并返回一个变量字典,然后这些变量在所有使用 a 呈现的模板中都可用RequestContext
,例如:
def get_stuff_from_session(request):
return {'stuff': request.session['stuff']}