Django中的上下文是什么?

Cam*_*hez 42 django django-templates django-context

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

  • 什么是背景,为什么要使用它?
  • 上下文是您在模板中使用时需要的值吗?
  • 上下文和上下文处理器是一样的吗?

我会很反应你的回应.提前致谢!

Sid*_*Sid 69

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

Context是一个字典,其变量名称为"key",其值为"value".因此,如果上述模板的上下文如下所示:{myvar1:101,myvar2:102},当您将此上下文传递给模板呈现方法时,{{myvar1}}将被替换为101而{{myvar2}}将替换为102在你的模板中.这是一个简单的示例,但实际上Context对象是呈现模板的"Context".

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

上下文处理器的用例是当您总是希望在模板中插入某些变量时(例如,用户的位置可能是候选者).您可以简单地为其编写上下文处理器并将其添加到settings.py中的TEMPLATE_CONTEXT_PROCESSORS设置,而不是编写代码以在每个视图中插入代码.

希望这是有道理的.谢谢你上课!

-sid


Vic*_*res 13

上下文是一个变量名 - > 变量值传递给一个模板映射.

上下文处理器允许您自动指定在每个上下文中设置的多个变量- 无需在每个render()调用中指定变量.


sk1*_*k1p 6

官方文档中对此Context进行了很好的描述。简而言之:

  1. 在日常使用中,大多数是间接使用,因为辅助函数会Context为您构建

  2. 参见 1.:只有使用低级 api时才需要它

  3. 不,上下文处理器是一个函数,它接受请求并返回变量字典,然后这些变量在使用 呈现的所有模板中可用RequestContext,例如:

    def get_stuff_from_session(request):
        return {'stuff': request.session['stuff']}
    
    Run Code Online (Sandbox Code Playgroud)