如何在Django模板中展示列表?解决上下文类型错误问题
解决Django上下文错误及模板变量匹配问题
这个错误的原因很明确:你传给render函数的上下文参数不是字典,而是一个集合,而Django要求上下文必须是字典类型。同时你的模板变量名和后端传递的变量名也不匹配,这两个问题共同导致了当前的错误。下面是具体的解决步骤:
1. 修正后端上下文传递格式
你现在的代码里写的是{'search_query'},这在Python中创建的是一个集合,而不是字典。正确的写法应该是用键值对的形式定义字典,键是模板中要使用的变量名,值是对应的Python变量。
因为你的模板里用的是suggest_search_query作为循环变量,所以后端需要把search_query列表以这个键名传递:
search_query = [] # ... 这里填充search_query的代码 ... return render(request, 'query/list.html', {'suggest_search_query': search_query})
2. 确认模板变量与后端一致
模板里的循环代码是{% for c in suggest_search_query%},只要后端传递的字典键是suggest_search_query,这个循环就能正确遍历你的列表了。如果之后你想修改变量名,要确保前后端的名称完全一致。
额外检查
还要确认search_query列表在传递给模板前已经被正确填充了数据(比如通过数据库查询或者其他逻辑添加元素),不然模板循环会因为列表为空而没有任何输出。
内容的提问来源于stack exchange,提问作者Shounak Chatterjee
相关产品推荐
相关产品推荐

