一尘不染

Django中的上下文是什么?

django

我是django初学者,所以我试图理解上下文和上下文处理器的概念。

  • 什么是上下文,为什么要使用它?
  • 你是否需要上下文才能在模板中使用它?
  • 上下文和上下文处理器是否相同?

非常感谢你的回复。提前致谢!


阅读 623

收藏
2020-03-29

共1个答案

一尘不染

当你使用Django模板时,它会被编译一次(并且只能编译一次)并存储以供将来使用,作为优化。模板可以在双花括号中包含变量名,例如 {{ myvar1 }}{{ myvar2 }}

一个背景是变量名称为字典键和它们的值的值。因此,如果你对上面的模板看起来像背景:{myvar1: 101, myvar2: 102}当你传递这方面的模板渲染方法,{{ myvar1 }}将被替换101,并{{ myvar2 }}用102在你的模板。这是一个简单的示例,但实际上Context对象是在其中渲染模板的上下文。

对于ContextProcessor,这是一个稍微高级的概念。你可以在settings.py文件中列出一些上下文处理器,这些上下文处理器接收一个HttpRequest对象并返回一个字典(类似于上面的Context对象)。上下文处理器返回的字典(上下文)将合并到你(用户)由Django传递的上下文中。

上下文处理器的一个用例是,当你始终要在模板中插入某些变量时(例如,用户的位置可能是候选对象)。你无需编写代码将其插入每个视图中,而只需为其编写一个上下文处理器并将其添加到中的TEMPLATE_CONTEXT_PROCESSORS设置中settings.py

2020-03-29