I would like to create a contact form on my Django website. For now, this is my code:
models.py:
JavaScript
x
6
1
from django.db import models
2
from phonenumber_field.modelfields import PhoneNumberField
3
4
class Client(models.Model):
5
phone = PhoneNumberField(null=False, blank=True, unique=True)
6
forms.py:
JavaScript
1
9
1
from django import forms
2
from phonenumber_field.modelfields import PhoneNumberField
3
4
class ContactForm(forms.Form):
5
fullName = forms.CharField(max_length=100)
6
email = forms.EmailField()
7
phone = PhoneNumberField()
8
message = forms.CharField(widget=forms.Textarea)
9
views.py:
JavaScript
1
12
12
1
def contact(request):
2
# return render(request, 'contact.html')
3
if request.method == 'POST':
4
form = ContactForm(request.POST)
5
if form.is_valid():
6
# send email code goes here
7
return HttpResponse('Thanks for contacting us!')
8
else:
9
form = ContactForm()
10
11
return render(request, 'contact.html', {'form': form})
12
html:
JavaScript
1
6
1
<form method="post">
2
{% csrf_token %}
3
{{ form.as_p }}
4
<input type="submit" value="Submit" />
5
</form>
6
I of course installed phonenumber_field
and added it in settings.py
This is the result, phone field missing:
Any help is hugely appreciated! Thanks for your time.
Advertisement
Answer
You used a model field, whereas for a form, you need a form field:
JavaScript
1
9
1
from django import forms
2
# a form field ↓
3
from phonenumber_field.formfields import PhoneNumberField
4
5
class ContactForm(forms.Form):
6
fullName = forms.CharField(max_length=100)
7
email = forms.EmailField()
8
phone = PhoneNumberField()
9
message = forms.CharField(widget=forms.Textarea)