KeyError в django при использовании textarea
Я хочу сделать очень простую операцию: 1-получение некоторой информации из формы 2-сохранение данных в базе данных. Но я получаю эту ошибку и я не знаю причину этого! Вы можете пожалуйста помочь .
это forms.py :
class ContactForm(forms.Form):
title = forms.CharField(max_length=500)
phone_mail = forms.CharField(max_length=30)
body = forms.Textarea()
это models.py :
class Contact(models.Model):
title = models.CharField(max_length=500)
phone_mail = models.CharField(max_length=30)
text = models.TextField()
это views.py :
def contact(request):
if request.method == 'POST':
form = forms.ContactForm(request.POST)
if form.is_valid():
data = form.cleaned_data
Contact.objects.create(title = data['title'] , text = data['body'] , phone_mail = data['phone_mail'])
return redirect('accounts:profile')
else :
form = forms.ContactForm()
con = {'form' : form}
return render(request , 'home/contact.html' , con)
А это форма :
<form class="row g-3 p-3" method="post">
{% csrf_token %}
<div class="col-md-6">
<label for="title" class="form-label">title</label>
<input type="text" class="form-control" id="title" name="title">
</div>
<div class="col-md-6">
<label for="phone_mail" class="form-label">phone or email</label>
<input type="text" class="form-control" id="phone_mail" name="phone_mail">
</div>
<div class="col-12">
<label for="inputtext" class="form-label">text:</label>
<textarea type="text" class="form-control" name="body" id="inputtext" minlength="20" maxlength="10000" required></textarea>
</div>
<div class="col-12">
<button type="submit" class="btn btn-primary">Send</button>
</div>
</form>
И я получаю эту ошибку для них, когда я использую форму для отправки данных :
KeyError at /contact/ 'body'
error line = Contact.objects.create(title = data['title'] , text = data['body'] , phone_mail = data['phone_mail'])
Вы получили эту ошибку, потому что написали текст вместо body.
models.py:
вместо:
text = models.TextField()
попробуйте это:
body = models.TextField()
class Contact(models.Model):
title = models.CharField(max_length=500)
phone_mail = models.CharField(max_length=30)
body = models.TextField() #changed here text to body
Здесь в файле forms.py:
измените это:
class ContactForm(forms.Form):
To:
class ContactForm(forms.ModelForm):