我确实知道要在django的listview中放置更多上下文,我们可以这样:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
b = 9
context['num'] = b
return context
Run Code Online (Sandbox Code Playgroud)
这样,我们就可以在模板文件中使用num了。
但是,假设我想将变量放置在上下文中,该怎么办?
b = 9
a = 10
context['a', 'b'] = a, b
Run Code Online (Sandbox Code Playgroud)
然后在我的html模板中通过直接调用{{a}}或{{b}}来引用它,没有错误显示,但是也没有任何显示。
我想我对基本字典有一些误解,而django给它增加了混乱,因为似乎您不能在{{}}内使用()或[],有人可以回答为什么我们不能使用()或{]在{{}}内的html代码内?
context 只是一本字典,所以你可以这样写:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
b = 9
a = 10
context['a'] = a
context['b'] = b
return contextRun Code Online (Sandbox Code Playgroud)
或者您可以使用一个.update(..)调用,然后在一个函数调用中添加元素:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
b = 9
a = 10
context.update(a=a, b=b)
return contextRun Code Online (Sandbox Code Playgroud)
为什么我们不能用
()或[]的HTML代码中的内部{{ }}?
因为Django模板是有意限制的,所以可以防止人们在模板中编写业务逻辑。但是,Jinja是允许执行函数调用和下标的模板处理器。但是通常,如果您需要在模板中使用它们,那么这表明设计可能有问题。
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |