Django新增数据库记录后模板不刷新,仅重启runserver后才显示如何解决?
Django新增数据后页面不更新、仅重启服务可见的解决方案
你将学生列表的查询语句student_data = Students.objects.all()定义在了模块顶层(视图函数外部),该代码只会在Django服务启动、模块加载时执行一次,拿到的是服务启动时刻的数据库数据。后续新增、修改、删除数据时,这个顶层变量不会自动重新查询数据库,所以页面只会显示旧数据,只有重启服务重新加载模块时才会更新,和你新增的ImageField字段无关。
修复方案
将查询逻辑移动到homePage视图函数内部,保证每次访问主页时都会重新查询最新数据,同时补充你原代码遗漏的StudentForm导入:
from django.shortcuts import render, redirect # 补充缺失的表单导入 from .forms import StudentForm from .models import Students def homePage(request): # 每次请求都重新查询最新的学生数据 student_data = Students.objects.all() return render( request, "pages/homePage.html", {"student_data": student_data}, ) def createStudent(request): form = StudentForm() if request.method == "POST": form = StudentForm(request.POST, request.FILES) if form.is_valid(): form.save() return redirect("homePage") context = {"form": form} return render(request, "pages/addStudent.html", context) def updateStudent(request, pk): student = Students.objects.get(unique_id=pk) form = StudentForm(instance=student) if request.method == "POST": form = StudentForm(request.POST, request.FILES, instance=student) if form.is_valid(): form.save() return redirect("homePage") context = {"form": form} return render(request, "pages/addStudent.html", context) def deleteStudent(request, pk): student = Students.objects.get(unique_id=pk) if request.method == "POST": student.delete() return redirect("homePage") context = {"object": student} return render(request, "pages/delete-template.html", context) def viewStudent(request, pk): student = Students.objects.get(unique_id=pk) context = {"student": student} return render(request, "pages/view_student.html", context)
内容的提问来源于stack exchange,提问作者WallerMonkey
相关产品推荐
相关产品推荐

