如何解决Django Crud 帮助 - 更新和删除
我是 django 的新手并试图完成一个 crud 项目,但是我在更新和删除方面遇到了问题。我尝试了多种故障排除方法,但我一直在做空。我已经为它的更新部分提供了错误消息。所以我在寻求建议。
下面是 urls、views 和 html 的代码。
网址 urlpatterns = [
path('admin/',admin.site.urls),path('add/',views.add,name="add"),path('',views.show,name="show"),path('update/<update_id>/',views.update,name="update"),path('delete/<delete_id>/',views.delete,name="delete"),
]
观看次数
定义添加(请求):
form = StudentForm(request.POST or None)
#student = Student.objects.all()
if form.is_valid():
form.save()
return render(request,'add.html',{'form': form})
定义显示(请求):
student = Student.objects.all()
return render(request,'show.html',{'student': student})
def update(request,update_id):
student = Student.objects.get(id=update_id)
form = StudentForm(request.POST,instance=student)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
return render(request,'update.html',{'student':student})
定义删除(请求,delete_id):
student = Student.objects.get(id=delete_id)
student.delete()
return HttpResponseRedirect('/')
**更新HTML:**
{% 扩展 'base.html' %}
{% 块内容 %}
更新 {% csrf_token %} ID 名称 接触
更新记录 显示详细资料 {% 端块内容 %} 非常感谢您的指导,也许我没有看到任何东西。 先感谢您
解决方法
您是否有关于错误的更多信息,或者是“RuntimeError at /update/1”您得到的所有输出?
无论如何我都会尽力帮忙:
- 对于您的更新视图,我会采取不同的做法: 我通常使用 get_object_or_404 来引发错误,以防我找不到给定的模型实例。然后我会做一个条件检查,看看请求是 POST(用户已将更新表单数据发送到服务器)还是 GET,用户在更新数据之前刚刚请求了表单。
据我所知,您没有考虑 GET。表格也应包含在上下文中。我
这就是我的更新函数的样子:
def update_student(request,update_id):
student = get_object_or_404(student,id=update_id)
if request.method != 'POST':
form = StudentForm(instance=student)
else:
form = StudentForm(instance=student,data=request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
context = {'form': form,'student': student}
return render(request,'update.html',context)
- 对于您删除视图的过程是相似的,我将再次使用 get_object_or_404。我会确保请求是 POST,否则不需要删除并在最后返回 render(request,template,{}) 以正确呈现页面。我看到您没有在函数中传递模板,您需要这样做。
这是我将如何执行删除功能:
def delete(request,delete_id):
template = 'delete.html'
student = get_object_or_404(student,id=delete_id)
if request.method == 'POST':
student.delete()
return HttpResponseRedirect('/')
return render(request,{})
关于 Django 中基于函数的视图的 CRUD 入门的伟大初学者的另一件事你可以查看这本书:http://bedford-computing.co.uk/learning/wp-content/uploads/2015/10/No.Starch.Python.Oct_.2015.ISBN_.1593276036.pdf
Project Section > Web Applications 在那里你会发现一个使用基于函数的视图在 Django 上制作的教程应用程序,并且比原始 django 文档解释得更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。