我是Django新手,但我似乎有几乎相同的代码在另一个站点上工作。我可以在Django shell中更新记录,但是视图.py相同的代码坚持在我运行此窗体时插入一个新记录。在
所以视图.py这是:
if request.method == 'POST':
incidentId = request.POST['id']
editedEvent = DisciplineEvent.objects.get(pk=int(incidentId))
form = DisciplineEventEntryForm(request.POST, instance=editedEvent)
form.save()
variables = Context({
'account': account,
'date': request.POST['event_date'],
'description': request.POST['incident_description'],
'incident_id':incidentId,
})
template = get_template('disciplineform_confirm_entry.html')
output = template.render(variables)
response = HttpResponse(output)
return response
我认为这将拉取有问题的记录,将新的表单数据保存到其中,并更新记录。相反,它创建一个包含所有数据和递增主键的新记录。在
您所要做的是非常规的,并且可能存在一个安全漏洞。在
您不应该从表单中填充的隐藏id键获取对象的实例。用户可以很容易地更改此实例,并让您的代码覆盖他们甚至没有权限访问的其他模型实例。在
标准的方法是根据url获取对象。在
希望有帮助!在
相关问题 更多 >
编程相关推荐