【发布时间】:2021-04-12 13:38:09
【问题描述】:
我是 django 的新手,我正在处理这个表单,我已经尝试了所有可能的方法,但我似乎无法显示表单错误消息。我尝试使用 def clean 方法,当我尝试提交空表单时没有任何反应。我厌倦了使用 FormView 我也尝试使用函数视图我尝试使用 for 循环并添加 {{ form.non_field_errors }}在我的模板中没有弹出任何内容。
我的应用程序/forms.py
from django import forms
class ContactForm(forms.Form):
name = forms.CharField( label='Your Name', min_length=2, max_length=25, required=True, error_messages ={'required':'Please tell Oluwafemi your name'})
email = forms.EmailField(label='Your Email', required=True, error_messages={'invalid':'Please fill in a valid email'})
subject = forms.CharField(label='Subject', min_length=4, max_length=100, required=True)
message = forms.CharField(widget=forms.Textarea(attrs={'placeholder':'Write Oluwafemi a Message'}), error_messages ={'required':'Please write something for Oluwafemi'})
我的应用/views.py
from django.views.generic import TemplateView
from django.shortcuts import render
from django.core.mail import send_mail
from .forms import ContactForm
from django.http import HttpResponseRedirect
# Create your views here.
class ProfilePageView(TemplateView):
template_name = 'femi_profile.html'
form_class = ContactForm
success_url = 'femiir'
def get(self, request, *args, **kwargs):
form = self.form_class()
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
email = form.cleaned_data['email']
subject = form.cleaned_data['subject']
message = form.cleaned_data['message']
# Send the email
send_mail(
f"{subject} - message from {name} ", # message subject
message, # Message Body
email, # Sender's mail (From mail)
['d4rahl@gmail.com'], # Reciever's mail(To mail)
)
return HttpResponseRedirect('femiir')
return render(request, self.template_name, {'form': form})
我的html模板的sn-p
<div class="col-lg-7 mt-5 mt-lg-0 d-flex align-items-stretch">
<form method="post">
{% csrf_token %}
<div class="form-row">
<div class="form-group col-md-6">
{{ form.name|as_crispy_field }}
</div>
<div class="form-group col-md-6">
{{ form.email|as_crispy_field }}
</div>
</div>
<div class="form-group">
{{ form.subject|as_crispy_field }}
{{ form.message|as_crispy_field }}
</div>
<div class="text-center"><button type="submit" class="btn btn-primary ">Send Message</button></div>
</form>
</div>
请问我做错了什么
【问题讨论】:
标签: python-3.x django django-views django-forms django-templates