Как отладить эту ошибку? "Метод не разрешен (POST)"

  1. Здравствуйте. Друзья, когда я заполняю форму на стороне HTML и отправляю ее на сторону Django для проверки. Я получаю ошибку "Django Method Not Allowed (POST)".

это моя модель

   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, )

Это моя форма

    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(),}

Это мой взгляд, это не полный взгляд, это только для тестирования

.
 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})

it looks like your post method is defined outside the view, but you are writing way too much boilerplate code. What you here construct is a CreateView [Django-doc], you can use:

from django.urls import reverse_lazy
from django.views.generic.edit import CreateView


class ContactView(CreateView):
    template_name = 'contact/contact_us.html'
    form_class = ContactModelForm
    success_url = reverse_lazy('home')
Вернуться на верх