- Hello. My friends, when I complete the form on the HTML side and send it to the Django side for validation. I get "Django Method Not Allowed (POST)" error.
this is urls
urlpatterns = [ path('send-ticket/', views.ContactView.as_view(), name='contact')]
this is form html side
<form method="post" action="{% url 'contact' %}" name="contact" > {% csrf_token %}<div class="row"><div class="col-lg-6"> {{ forms.name.label_tag }} {{ forms.name }} {{ forms.name.errors }}</div><div class="col-lg-6"> {{ forms.surname.label_tag }} {{ forms.name }} {{ forms.surname.errors }}</div><div class="col-lg-6"> {{ forms.email.label_tag }} {{ forms.email }} {{ forms.email.errors }}</div><div class="col-lg-6"> {{ forms.subject.label_tag }} {{ forms.subject }} {{ forms.subject.errors }}</div><div class="col-lg-12"> {{ forms.text.label_tag }} {{ forms.text }} {{ forms.text.errors }}</div><div class="col-lg-12"><button type="submit" id="form-submit" class="orange-button">Send Message Now</button></div></div></form>
this is my model
class ContactUs(models.Model): name = models.CharField(max_length=20, null=True, ) surname = models.CharField(max_length=20, null=True, ) email = models.EmailField(max_length=30, null=True, ) subject = models.CharField(max_length=20, null=True, ) text = models.TextField(null=True, )
this is my form
class ContactModelForm(forms.ModelForm): class Meta: model = ContactUs fields = \['name', 'email', 'surname', 'subject', 'text'\] widgets = {'name': forms.TextInput(),'surname': forms.TextInput(),'email': forms.EmailInput(),'subject': forms.TextInput(),'text': forms.Textarea(),}
This my view,this is not a complete view, it is just for testing
class ContactView(View): def get(self, request): form = ContactModelForm() return render(request, 'contact/contact_us.html', {'forms': form}) def post(self, request): form = ContactModelForm(request.POST)`` if form.is_valid(): form.save() return redirect('home') return render(request, 'contact/contact_us.html',{'forms':form'})