0
NOTE/UPDATE:此問題是由拼寫錯誤:(驗證上的ModelForm失敗
嗨,我是想教我的自我Django的同時使一個小任務管理應用程序引起的
我有一個模型
class Task(models.Model):
track = models.ForeignKey(Track, on_delete=models.SET_NULL, null=True)
title = models.CharField(max_length=100)
description = models.CharField(max_length=265, blank=True)
done = models.BooleanField(default=False)
def __str__(self):
return self.title
和相關的ModelForm
class TaskForm(forms.ModelForm):
class Meta:
model = Task
fields = ['track', 'title', 'description', 'done']
表單發佈時taskForm.is_valid()返回False。 這是post_task方法:
def post_task(request):
form = TaskForm(request.POST)
if form.is_valid():
form.save(commit=True)
else:
print(form.errors)
return HttpResponseRedirect('/')
和頁面的表單標籤:
<form action="post_url" mehod="post">
{% csrf_token %}
{{ task_form.as_p }}
<input type="submit" value="Add"/>
</form>
儘管我已經填寫了所有我得到驗證錯誤的數據,這是控制檯打印:
0:<ul class="errorlist"><li>track<ul class="errorlist"><li>This field is required.</li></ul></li><li>title<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
所有值都在請求被通過
[23/Apr/2017 12:34:38] "GET /post_url/?csrfmiddlewaretoken=VqUx3EM9yGFzS88kYRtTWtniaCV8ZukxymylPILlxHBohtfEyhD3epOKOjKNIVCU&track=1&title=testTitle&description=testDescription HTTP/1.1" 302 0
謝謝!
你確定你做你的要求爲POST? ,它似乎是一個GET。 –
注意:您不需要將'commit = True'傳遞給'form.save()',這是默認值。 – Daniel
另一方面請注意:嘗試在'action'屬性中使用'{%url%}'模板標籤,或將其留空以將數據發送到同一頁面。 – Daniel