Django提交作业反复报错‘未找到Price’,请求技术帮助
核对模板字段名与模型完全一致
打开ad_detail.html,确认渲染价格的代码和模型里的字段名完全匹配——比如模型是price全小写,模板里就不能写成Price首字母大写,也别把price拼写成prize。同时要确认上下文变量正确,比如视图传的是ad对象,模板里就得写{{ ad.price }},不能用错变量名。同步PythonAnywhere的代码与本地版本
登录PythonAnywhere的文件管理器,检查views.py和ad_detail.html是否和本地测试没问题的代码完全一样。很多时候本地改了代码,但没同步到服务器,导致服务器用的还是旧版本。确认视图正确传递含price字段的对象
查看views.py的详情视图函数,确保它从数据库取的对象包含price字段,并且正确传到模板上下文。比如:def ad_detail(request, ad_id): ad = get_object_or_404(Ad, pk=ad_id) return render(request, 'ad_detail.html', {'ad': ad})要保证
Ad模型确实有price字段,而且没在查询时用only()排除掉这个字段。重启PythonAnywhere应用并清理缓存
去PythonAnywhere的Web页面点"Reload"重启应用,有时候服务器会缓存旧的模板或视图内容。也可以手动删掉项目里的__pycache__文件夹,清除缓存文件。在PythonAnywhere上直接验证数据与页面源码
登录PythonAnywhere控制台,运行python manage.py shell,手动查一个Ad对象确认price有值:from yourapp.models import Ad ad = Ad.objects.first() print(ad.price)要是这里能输出正确值,就去浏览器打开详情页,右键看页面源代码,搜索price相关内容,确认页面里是渲染好的数值,不是没解析的模板标签
{{ ad.price }}。检查作业测试的格式要求
有些课程自动测试会要求price字段放在特定HTML标签里,比如带class="price"的span标签。仔细看作业提交说明,确认是不是没满足格式要求,导致测试识别不到price。
内容的提问来源于stack exchange,提问作者Karthi

