python - 为什么我的提交按钮在它应该包含刚刚更新的数据时呈现一个空白页面?
问题描述
我正在尝试使用 HTML 表单更新我的数据库的值。
当我单击编辑时,它会将我带到编辑上面的值。
但是,当我单击提交按钮时,它会返回一个数据库,但没有其他值。
有没有人可以帮助我理解我做错了什么并指出我正确的文档(如果有的话)
编辑声明.html:
<div class="arrange2">
<h1>Edit Claim Form - #{{claims.id}} </h1>
</div>
<form method="POST" action="/update/{{claims.id}}">
{% csrf_token %}
视图.py:
def editclaims(request,id):
context = initialize_context(request)
user = context['user']
claims = SaveClaimForm.objects.get(id=id)
if request.method == 'POST':
name = request.POST['name']
email = request.POST['email']
claim = request.POST['claim']
claimtype = request.POST.get('claimtype')
description = request.POST['description']
receipt = request.FILES['receipt']
cheque = request.POST.get('Cheque')
form = SaveClaimForm(name=name, email=email, claim=claim, claimtype=claimtype, description=description, receipt=receipt, cheque=cheque)
form.save()
return render(request, "Login/editclaims.html", {'claims':claims, 'user':user})
网址.py:
urlpatterns = [
path('existingclaims/', views.viewclaims, name='existingclaims'),
path('editclaims/<int:id>', views.editclaims, name='editclaims'),
path('update/<int:id>', views.updateclaims, name='updateclaims'),
]
解决方案
它可能无法解决您所有的问题,但它作为答案将更具可读性。
当您从 HTML 获取数据时,您将创建新对象SaveClaimForm
,它将具有新对象,ID
并且您将在两行中拥有相同的对象。
您必须从数据库中获取原始Claim
值并更新此对象中的值并保存它 - 然后它将与原始值一起保存,ID
并且您在数据库中只有一个“对象”
def editclaims(request,id):
context = initialize_context(request)
user = context['user']
# get original object
claims = SaveClaimForm.objects.get(id=id)
if request.method == 'POST':
# update original object
claims.name = request.POST['name']
claims.email = request.POST['email']
claims.claim = request.POST['claim']
claims.claimtype = request.POST.get('claimtype')
claims.description = request.POST['description']
claims.receipt = request.FILES['receipt']
claims.cheque = request.POST.get('Cheque')
# save it with original `ID`
claims.save()
return render(request, "Login/editclaims.html", {'claims':claims, 'user':user})
顺便提一句:
Django
有特殊的类ModelForm
来在 HTML 中创建表单。它还可能具有检查 HTML 中的数据是否正确的方法 - 即。name@domain.com
如果字段不为空,如果电子邮件构造正确ModelForm
(
推荐阅读
- discord - 如何防止每周/定期不和谐机器人离线状态(托管在 Repl.it 上)?
- excel - VBA & Excel:选择选择下方的行
- swift - 如何确保 TextField 中的双重输入?(迅速)
- javascript - 如何在反应的表头行前后添加一条水平线?
- pip - 有没有办法在 setup.py 中包含一个 conda 包
- mysql - int列数据长度不能设置,保存到mysql后归零,但是varchar和datetime可以设置
- c# - 如何更改 ListBox 的 IsVisible 属性?
- sql - 如何使用 SQL 拆分两个单词?
- terraform - 带有工作区的数据源 terraform_remote_state
- amazon-web-services - S3用自定义错误替换默认xml错误不起作用