我是django初学者,所以我试图理解上下文和上下文处理器的概念。
我会很反应你的回应。提前谢谢!
答案 0 :(得分:60)
当您使用Django模板时,它会被编译一次(并且只编译一次)并存储以供将来使用,作为优化。模板可以在双花括号中具有变量名称,例如
{{ myvar1 }}
和{{ myvar2 }}
。
Context是一个字典,其变量名称为键,其值为值。因此,如果上述模板的上下文如下所示:{myvar1: 101, myvar2: 102}
,当您将此上下文传递给模板呈现方法时,{{ myvar1 }}
将替换为101
和{{ myvar2 }}
模板中的102
。这是一个简单的示例,但实际上Context对象是正在呈现模板的 context 。
对于ContextProcessor,这是一个稍微高级的概念。您可以在settings.py
文件中列出一些上下文处理器,它们接收一个HttpRequest
对象并返回一个字典(类似于上面的Context对象)。上下文处理器返回的字典(上下文)被合并到Django由您(用户)传入的上下文中。
上下文处理器的用例是当您总是希望在模板中插入某些变量时(例如,用户的位置可能是候选者)。您可以简单地为其编写上下文处理器,并将其添加到TEMPLATE_CONTEXT_PROCESSORS
中的settings.py
设置中,而不是编写代码以在每个视图中插入代码。
希望这是有道理的。谢谢参加课程!
答案 1 :(得分:12)
上下文是变量名称 - >传递给模板的变量值映射。
上下文处理器允许您自动指定在每个上下文中设置的多个变量 - 无需在每个 render()<中指定变量/ strong>致电。
答案 2 :(得分:1)
在the official documentation中很好地描述了Context
。简而言之:
在日常使用中,主要是间接使用,因为helper functions为您构建Context
参见1:如果您使用the low-level api
不,context processor是一个接收请求并返回变量字典的函数,然后在所有使用RequestContext
呈现的模板中可用,例如:
def get_stuff_from_session(request):
return {'stuff': request.session['stuff']}