将FormData字段的value附加为布尔值false会导致函数失败
Appending FormData field with value as a boolean false causes the function to fail.
我试图AJAX一个简单的形式到Django服务器,其中一个字段是要更新的对象id,另一个是一个布尔字段,对应的对象应该更新到。在Javascript中,我初始化一个新的FormData并附加表单值,然后通过Ajax调用将其提交给服务器。但是,当布尔形式数据字段设置为false
时,Ajax请求失败,说该字段未设置。
from django import forms
class UpdateHazardForm(forms.Form):
pk = forms.IntegerField()
fixed = forms.BooleanField()
相关js代码
var fd = new FormData();
fd.append('pk', pID)
fd.append('fixed', checked)
// Ajax changes to server
$.ajax({
url: "/update_hazard/",
type: 'POST',
data: fd,
dataType: "json",
processData: false,
contentType: false,
success: function(data) {
if (data['success']) {
console.log("success");
}
else{
console.log("not success");
}
}
});
view函数
@require_POST
@user_passes_test(lambda u: u.is_superuser)
def updateHazard(request):
form = UpdateHazardForm(request.POST)
if form.is_valid():
pk = form.cleaned_data['pk']
fixed = form.cleaned_data['fixed']
hazard = get_object_or_404(Hazard, pk=pk)
hazard.hazard_fixed=fixed
hazard.save()
return JsonResponse({'success': True})
logger.debug(form.errors)
return JsonResponse({'success': False})
使用checked==true调用fd.append("fixed", checked)
时,表示ajax post成功。当检查==false时,失败,错误为<ul class="errorlist"><li>fixed<ul class="errorlist"><li> This field is required.</li></ul></li></ul>
我怀疑是FormData。Append (name, value)函数使用if语句检查值,当值为布尔值false时,该语句失败。我试过用toString()将"checked"值更改为字符串,但它不起作用。
任何帮助都是感激的。我更喜欢将表单字段保留为布尔域,以保持视图函数的简单性。
如果您希望布尔字段接受false,则需要设置required=False
。
fixed = forms.BooleanField(required=False)
相关文章:
- 如果 a 为 false,则 if(a) === if(false)
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 如何将localStorage值设置为false
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- JsFiddle在分叉后描述失败
- JavaScript-切换“;全部检查”;复选框true/false
- gulp Iconify任务抛出错误TypeError:Path必须是字符串.收到false
- 为什么不'当单元测试出现解析错误时,我的因果报应测试会失败
- 当一些承诺失败时,如何继续使用$q.all()
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 在Jquery中单击传播失败
- 网页上失败的javascript会导致所有其他脚本失败
- 带有对象解析的响应javascript ajax失败
- 一台特定计算机的Ajax请求数据未定义/失败
- 预期[false]为false量角器e2e测试失败
- 循环遍历所有字段,如果任何一个字段的验证失败jquery,则返回false
- 失败事件返回 false 值的制表符,当使用辐射窗口时
- 当返回false;时,Javascript AJAX调用在firefox中失败;
- 当status=false时,alert(data.status)会失败,但当status=true时不会失败
- 将FormData字段的value附加为布尔值false会导致函数失败