Django模型表单提交的数据无法在另一页面显示问题
Django表单提交后数据无法显示的问题修复
1. 模型__str__方法存在错误
你的EmpModel中没有定义empID字段,但__str__方法却返回self.empID,这会导致对象调用时抛出AttributeError,虽然当前未触发,但属于潜在问题,需修正:
# Models.py class EmpModel(models.Model): empName = models.CharField(max_length=20) empJob = models.CharField(max_length=20) def __str__(self): return self.empName # 替换为模型中存在的字段
2. GET请求表单未实例化
视图的GET分支中,你直接传递了表单类而非实例化对象,模板无法正常渲染表单,需修改:
# Views.py def empDetails(request): if request.method == "POST": form = EmpModelForm(request.POST) if form.is_valid(): empFormSave = form.save() empInfoData = EmpModel.objects.all() return render(request, "empInfoData.html", {"empInfoData" : empInfoData}) else: form = EmpModelForm() # 实例化表单对象 return render(request, "empInfo.html", {"form" : form})
3. QuerySet无法直接访问单个对象属性
EmpModel.objects.all()返回的是对象集合(QuerySet),模板中直接用{{ empInfoData.empName }}无法获取数据,需根据需求调整:
- 若要显示所有员工数据,模板需遍历集合:
<!-- empInfoData.html 模板修改 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Employee Information Submitted</title> </head> <body> <h2>Employee Data available in the system</h2> {% for emp in empInfoData %} <p>Employee Name : {{ emp.empName }}</p> <p>Employee Job : {{ emp.empJob }}</p> <hr> {% empty %} <p>No employee data found.</p> {% endfor %} </body> </html>
- 若仅需显示刚提交的单条数据,视图可直接传递保存后的对象:
# Views.py POST分支修改 if form.is_valid(): empFormSave = form.save() return render(request, "empInfoData.html", {"empInfoData": empFormSave})
4. 模板语法错误
模板中存在多余的<符号,需修正:
<!-- 错误代码 --> <<p>Employee Job : {{ empInfoData.empJob }}</p> <!-- 修正后 --> <p>Employee Job : {{ empInfoData.empJob }}</p>
内容的提问来源于stack exchange,提问作者Bilal Mohammad
相关产品推荐
相关产品推荐

