【发布时间】:2021-07-26 06:55:33
【问题描述】:
是的,我确实看过其他类似问题的回复。但是我还没有找到对我有帮助的方法,我查看了所有当前可用的解决方案。
我正在尝试在文本框中输入名称,然后点击提交,允许我创建新的项目列表(这些项目无关紧要)。
但是当我点击提交按钮时,什么也没有发生。
经过多次打印语句,我推断原因是因为form.is_valid()函数返回false
if response.method == "POST":
# returns a dictionary of information in the form
form = CreateNewList(response.POST)
print(form.errors)
# if the form is valid, get the name attribute and create a new ToDoList with it
if form.is_valid():
n = form.cleaned_data["name"]
t = ToDoList(name=n)
t.save()
return HttpResponseRedirect("/%i" % t.id)
else:
form = CreateNewList()
return render(response, "main/create.html", {"form": form})
在阅读了我在网上找到的一些帖子后,我采取的下一步是使用forms.errors 打印出错误
这就是我从打印出来的结果
<ul class="errorlist"><li>check<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
在这一点上,我不知道检查是什么或做什么。网上有人回复说它是某些字典的一部分,我必须做类似form['check'] = 1 的事情,但是当我这样做时,它说字典是不可变的或无效的声明。我也试过form.data['check']=1,同样的事情
这是创建新列表的函数
class CreateNewList(forms.Form):
name = forms.CharField(label="Name", max_length=200)
check = forms.BooleanField(label="Completed", required=True)
【问题讨论】:
-
听起来您的模板中没有包含
check字段?它没有得到它必须拥有的check字段的True值,所以它给了你这个错误。确保显示check字段并确保它获得True值,然后该错误将消失。 -
@markwalker_ 你的解决方案对我有用,然后我删除它只是为了看看会发生什么。然后它继续工作,哈哈。不确定这里到底发生了什么,但我在下面留下了更详细的事件链。非常感谢你