[英]Django form.is_valid() is returning false everytime
我已經創建了一個django應用程序。 在這種情況下,當我單擊index.html頁面上的更新按鈕時,它必須重定向到一個顯示具有3個字段(標題,用戶,正文)的表單的網頁。 每次我單擊更新時,該表單都不會生效。 它總是返回false。 實際上,如果我們按下更新按鈕,則用戶字段應顯示當前用戶的ID。 但是它顯示默認值。 身體字段每次都變為空。
forms.py:
class ImmediateForm(forms.ModelForm):
title = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'readonly'}),initial="Immediate",max_length=20)
class Meta:
model = Immediate
fields = ['title','user','body',]
widgets = {
'user': TextInput(attrs={'readonly': 'readonly'})
}
Models.py:
class Immediate(models.Model):
title = models.CharField(default="Immediate",max_length=30)
user = models.ForeignKey(User, default=1,on_delete=models.CASCADE)
body = models.TextField(default="")
def __str__(self):
return self.title
views.py:
def update_immediate(request,pk):
if not request.user.is_authenticated:
return render(request, 'set_goals/index.html')
else:
print(pk)
try:
if request.method=='POST' :
print('Inside if')
immediate = Immediate.objects.get(user_id=pk)
form = ImmediateForm(request.POST or None, instance=immediate or None)
if form.is_valid():
print("no")
immediate = form.save(commit=False)
immediate.user = request.user.username
immediate.body = form.cleaned_data['body']
immediate.save()
return render(request, 'set_goals/detail_immediate.html', {'immediate': immediate})
context = {
"form": form,
}
return render(request, 'set_goals/create_template.html', context)
except:
if request.method=='POST' :
print('Inside if')
form = ImmediateForm(request.POST or None)
if form.is_valid():
print("yes")
immediate = form.save(commit=False)
immediate.user = request.user
immediate.body = form.cleaned_data['body']
immediate.save()
return render(request, 'set_goals/detail_immediate.html', {'immediate': immediate})
context = {
"form": form,
}
return render(request, 'set_goals/create_template.html', context)
按鈕所在的html頁面:
index.html的:
<div class="col-md-6">
<div class="card mb-4">
<div class="card-header">
Immediate
</div>
<img class="card-img-top" style="width:495px;height:400px;" src="" alt="Card image cap">
<div class="card-body">
<h2 class="card-title">Empty for now</h2>
<p class="card-text"></p>
<form class="form-horizontal" role="form" action="" method="POST" enctype="multipart/form-data">
<a href="{% url 'set_goals:update_immediate' user.id %}" class="btn btn-primary">Update →</a>
<a href="{% url 'set_goals:detail_immediate' user.id %}" class="btn btn-primary">Read More →</a>
</form>
</div>
</div>
</div>
這是什么錯誤? 為什么InstantForm()不起作用? 應該怎么做才能糾正這個問題?
要調試此錯誤,可以在form.is_valid之前或之后立即使用form.errors。 然后只是輸出到控制台,您會發現問題出在哪里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.