Как отладить эту ошибку? "Метод не разрешен (POST)"
- Здравствуйте. Друзья, когда я заполняю форму на стороне 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')