如何调试这个错误? “不允许使用方法(POST)”

问题描述 投票:0回答:1
  1. 你好。我的朋友们,当我在 HTML 端完成表单并将其发送到 Django 端进行验证时。我收到“不允许 Django 方法 (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})
python django django-models django-views django-forms
1个回答
0
投票

看起来您的

post
方法是在视图的外部定义的,但是您编写了太多的样板代码。你在这里构造的是一个
CreateView
 [Django-doc]
,你可以使用:

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')
© www.soinside.com 2019 - 2024. All rights reserved.