![](/img/trans.png)
[英]Django POST Request: I always end up with an Error 400 and the provided data in the request doesn't get accepted
[英]Django; POST request doesn't work when I try to submit invalid data
我發現某些表格沒有顯示錯誤消息,所以我嘗試這樣做。
def add_entry(request):
if request.method != 'POST':
form = EntryForm(user=request.user)
else:
form = EntryForm(request.POST, user=request.user)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse_lazy('blog:list_entry'))
else:
print("error happened.")
context = {
'form': form,
}
return render(request, 'blog/add_entry.html', context)
即使我嘗試提交無效的數據,它也不會輸出任何內容。
html
<form method="POST">
{% csrf_token %}
<div class="form-group">
{{ form.description.errors }}
<label>{{ form.description.label }}</label>
{{ form.description|add_class:'form-control' }}
</div>
<button type="submit" class="btn btn-primary">Post</button>
</form>
models.py
class Entry(models.Model):
description = models.TextField(max_length=512)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
forms.py
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ['description']
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
super().__init__(*args, **kwargs)
def save(self):
entry = super().save(commit=False)
entry.user = self.user
entry.save()
return entry
當我提交有效數據時,該表格可以使用。 我有什么錯嗎?
聽起來好像您的瀏覽器驗證阻止了description
字段為空時提交表單。
您可以通過向表單添加novalidate
來解決此問題。 然后,瀏覽器將允許您提交帶有description=""
的請求,並且您應該在響應中看到Django的錯誤。
<form method="POST" novalidate>
{% csrf_token %}
<div class="form-group">
{{ form.description.errors }}
<label>{{ form.description.label }}</label>
{{ form.description|add_class:'form-control' }}
</div>
<button type="submit" class="btn btn-primary">Post</button>
</form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.