I would like to create a contact form on my Django website. For now, this is my code:
models.py:
from django.db import models from phonenumber_field.modelfields import PhoneNumberField class Client(models.Model): phone = PhoneNumberField(null=False, blank=True, unique=True)
forms.py:
from django import forms from phonenumber_field.modelfields import PhoneNumberField class ContactForm(forms.Form): fullName = forms.CharField(max_length=100) email = forms.EmailField() phone = PhoneNumberField() message = forms.CharField(widget=forms.Textarea)
views.py:
def contact(request): # return render(request, 'contact.html') if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): # send email code goes here return HttpResponse('Thanks for contacting us!') else: form = ContactForm() return render(request, 'contact.html', {'form': form})
html:
<form method="post"> {% csrf_token %} {{ form.as_p }} <input type="submit" value="Submit" /> </form>
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:
from django import forms # a form field ↓ from phonenumber_field.formfields import PhoneNumberField class ContactForm(forms.Form): fullName = forms.CharField(max_length=100) email = forms.EmailField() phone = PhoneNumberField() message = forms.CharField(widget=forms.Textarea)