这是我的模型
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})
看起来您的
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')