Python 当使用django表单将信息更新到数据库时,form.is_valid()无效吗
所以我想用一个表单更新数据库中路由器的信息,我想用一个表单预先填充特定路由器的详细信息。问题是form.is_valid()不起作用 我尝试使用{{form.errors}{{form.non_field_errors}}和打印(form.errors),但都不起作用 views.py(不完整) forms.pyPython 当使用django表单将信息更新到数据库时,form.is_valid()无效吗,python,django,django-forms,Python,Django,Django Forms,所以我想用一个表单更新数据库中路由器的信息,我想用一个表单预先填充特定路由器的详细信息。问题是form.is_valid()不起作用 我尝试使用{{form.errors}{{form.non_field_errors}}和打印(form.errors),但都不起作用 views.py(不完整) forms.py class UpdateRouter(ModelForm): class Meta: model = Routers fields = ['mo
class UpdateRouter(ModelForm):
class Meta:
model = Routers
fields = ['model', 'ip_addr', 'name', 'sn', 'mac']
模板
<form class="form-horizontal" action="" method="post">
{% csrf_token %}
<div class="form-group"> <!-- Form with the router details -->
<label class="control-label col-sm-2" for="text">Serial number:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="text" name="sn" value="{{ router.sn }}" readonly>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="text">Model:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="text" value="{{ router.model }}" name="model" readonly>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="text">Ip address:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="text" value="{{ router.ip_addr }}" name="ip_addr">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="text">Name:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="text" value="{{ router.name }}" name="name">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="text">Mac address:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="text" value="{{ router.mac }}" name="mac">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="text">Extra info:</label>
<div class="col-sm-10">
<textarea class="form-control" name="extra_info" id="FormControlTextarea" rows="3">Example of some info</textarea>
</div>
</div>
<div class="form-group" style="margin-top: 20px;">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">Update</button> <!-- Responsible for updating the router -->
<a href="{% url "db_router" %}" class="btn btn-secondary">Cancel</a>
<button type="button" class="btn btn-danger" data-toggle="modal" data-target="#myModal" style="float: right"> <!-- Responsible for the delete modal to open -->
Delete
</button>
</div>
</div>
</form>
{%csrf_令牌%}
序列号:
型号:
Ip地址:
姓名:
Mac地址:
额外信息:
一些信息的示例
更新
删除
您从未通过请求.POST
和请求.FILES
。如果要更新字段和文件,需要form.save()
您的表单:
if request.method == 'POST':
#Updating the form
form = UpdateRouter(request.POST, request.FILES, instance=Routers.objects.get(sn=pk))
print(form)
print(form.errors)
if form.is_valid():
data = form.cleaned_data
mac = data['mac']
form.save()
print(mac)
return redirect('db_router')
else:
print("Invalid form")
您需要创建一个绑定表单
form = UpdateRouter(request.POST)
form=UpdateRouter(request.POST)将数据绑定到表单类。然后验证
使用的输入是有效的() 我应用了你所说的更改,form.is\u valid()现在是真的,但是现在我得到了这个“type object'UpdateRouter'没有属性'cleaned\u data'”@JoãoDias:是的,那应该是
form.cleaned\u data
:)所以我在这里得到了一个错误rout=router.objects.get(sn=pk)
,所以我把它改成了`rout=get\u object\u或@404(Routers,sn=pk)``因此,即使详细信息正在更新(谢谢),当我单击更新按钮“未找到:/router\u info/db\u router”“没有路由器与给定查询匹配”时,仍然会出现错误。url保持如下“router\u info/db\u router”应该是db_路由器,这可能很简单,我是Django的乞丐,所以我想不出来xd@JoãoDias:您需要重定向
,而不是HttpResponseRedirect
。
<form enctype="multipart/form-data" class="form-horizontal" action="" method="post">
<!-- -->
</form>
form = UpdateRouter(request.POST)