首次使用Django遇AttributeError:tuple对象无get属性及模板问题求助
嘿,我一眼就找到问题根源啦!咱们一步步来解决:
问题定位与修复步骤
1. 核心错误:视图返回了元组而非响应对象
你看到的AttributeError: 'tuple' object has no attribute 'get',直接原因在views.py的返回语句里:
return render(request, "product/detail.html", context),
末尾多出来的逗号,让你返回的不是Django需要的HttpResponse对象,而是一个包含响应的元组。Django的中间件(比如这里的点击劫持防护中间件)会尝试调用响应对象的get方法,可元组根本没有这个方法,于是就报错了。
修复方法:删掉那个多余的逗号:
return render(request, "product/detail.html", context)
2. 模板语法错误需要同步修正
你的product/detail.html里的if标签语法也有问题,空格位置不对:
<p>{ % if description } {{ description }} { % else % } Description Coming Soon { % endif % }</p>
正确的模板标签语法应该是标签与百分号之间无空格,且标签闭合格式正确。修正后:
<p>{% if description %} {{ description }} {% else %} Description Coming Soon {% endif %}</p>
额外小提示:解决PyCharm缩进提示问题
关于PyCharm提示的缩进无效,没必要加无意义的空格。Django模板的缩进虽不像Python代码严格,但保持标签和内容的缩进一致(比如{% block %}内的内容缩进4个空格),既能符合模板规范,也能让PyCharm的语法检测更准确。
内容的提问来源于stack exchange,提问作者Manghud
相关产品推荐
相关产品推荐

