如何在Django的get_context_data中返回多个对象供模板调用?
问题分析与解决
你的代码里有两个关键问题导致fixbmr无法在模板中使用:
return context语句在context['fixbmr'] = bmr * 2之前,这行赋值代码永远不会被执行- 代码里没有定义
bmr变量,直接用context字典的键名计算会引发NameError
修复后的代码
def get_context_data(self, **kwargs): kcl = self.request.user.kcal men_kcal = 13.8 * kcl.weight context = super().get_context_data(**kwargs) # 先计算bmr数值并存储为变量 if kcl.goal == 'diet': bmr = men_kcal - 500 else: bmr = men_kcal + 500 # 将bmr和计算后的fixbmr都加入context字典 context['bmr'] = bmr context['fixbmr'] = bmr * 2 # 最后返回完整的context return context
模板使用
修复完成后,直接在模板中使用{{ bmr }}和{{ fixbmr }}即可正常渲染两个变量。
内容的提问来源于stack exchange,提问作者Corgi coding
相关产品推荐
相关产品推荐

