我确实知道要在Django的列表视图中放置更多上下文,我们可以像这样:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
b = 9
context['num'] = b
return context
,因此,我们可以在模板文件中使用num。
但是,假设我要将变量放置在上下文中,该怎么办?
b = 9
a = 10
context['a', 'b'] = a, b
,然后在HTML模板中通过直接调用{{a}}或{{b}}来引用它,没有错误出现,但也没有任何错误。
我认为我对基本词典有一些误解,而django给它增加了困惑,因为似乎您不能在{{}}内使用()或[],有人可以回答为什么我们可以在{{}}内的html代码内使用()或[]吗?
答案 0 :(得分:4)
context
只是一本字典,所以您可以这样写:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
b = 9
a = 10
context['a'] = a
context['b'] = b
return context
或者您可以使用.update(..)
调用,并在单个函数调用中添加元素:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
b = 9
a = 10
context.update(a=a, b=b)
return context
为什么我们不能在
()
内的html代码中使用[]
或{{ }}
?
因为Django模板是有意限制的,以防止人们在模板中编写业务逻辑。 Jinja是允许执行函数调用和下标的模板处理器。但是通常,如果您需要在模板中使用它们,那么这表明设计可能有问题。