如何在HTML中调用函数返回的多个值
你遇到的问题核心是Python多返回值的默认类型和Django模板的取值逻辑不匹配。Python中函数返回多个值时,默认返回的是元组类型,而非带属性名的字典结构,你现在传递到模板的get_title_and_text实际是('Some title', 'Some text')这类有序序列,自然没法通过.title、.text的方式按名称取值。
解决方案1:调整后端返回结构,无需修改原有模板代码
把你的工具函数返回值改成字典结构,这样你原来写的HTML取值逻辑可以直接生效,同时代码可读性更高:
def get_title_and_text(): title = 'Some title' text = 'Some text' # 返回字典而非多值元组 return {'title': title, 'text': text} def page(request): # 注意原代码这里缺了render的右括号,同时page函数需要带request参数 return render(request, 'page.html', {'get_title_and_text': get_title_and_text()})
修改完后原有HTML代码不用做任何调整即可正常渲染。
解决方案2:不修改后端逻辑,直接调整模板取值方式
如果你不想改动后端函数的返回逻辑,直接在模板中通过元组的下标取值即可,元组第一个下标对应第一个返回值,第二个下标对应第二个返回值:
<h3>{{ get_title_and_text.0 }}</h3> <h3>{{ get_title_and_text.1 }}</h3>
内容的提问来源于stack exchange,提问作者SODEV
相关产品推荐
相关产品推荐

