Yeah, I was wrong Vijay. For some odd reason I thought the ValidationError would catch it BEFORE submitted. . .
I re-read the docs and saw I was wrong. . In other words, I I try to submit the form with the input field empty, I get a small pop up error saying "Please Enter An Email". Or, if I use an invalid email format, I get the same popup error saying "Please Enter An Email Address." Is there a way to do this with this (with django)? On Thursday, December 22, 2016 at 9:30:22 PM UTC-5, Vijay Khemlani wrote: > > I'm not following > > If you submit the form with incorrect information (non unique email) then > your view does not return anything because form.is_valid() returns False > > Validation errors don't prevent the form from being submitted, they > prevent the form from validation (making form.is_valid() return False and > adding values to form.errors) > > On Thu, Dec 22, 2016 at 5:14 PM, Chris Kavanagh <[email protected] > <javascript:>> wrote: > >> I have a model form called *"ContactForm" *that has an email field. I >> created a custom* forms.ValidationError* in *"clean_email"* method >> >> which checks to see if the email is already in the database , however >> it's never raised on submit. >> >> >> When submit is called, the view runs and I get the error *"The view >> customer.views.send_email didn't return an HttpResponse object.* >> >> * It returned None instead"*, because it's not being passed an actual >> email. . >> >> I don't understand why the *forms.ValidationError* isn't stopping it >> from being submitted? The query in the *"clean_email"* works fine, so >> that's not the problem. >> >> I've used this same code before with no problems. I'm sure it's something >> easy I'm forgetting or missing, but any help is GREATLY appreciated. . >> >> Note: I am using django crispy forms >> >> >> *#Model:* >> class Customer(models.Model): >> email = models.EmailField(max_length=70,blank=False) >> created = models.DateTimeField(auto_now_add=True) >> >> class Meta: >> ordering = ('email',) >> >> def __unicode__(self): >> return self.email >> >> >> >> >> *#Form:* >> class ContactForm(forms.ModelForm): >> >> class Meta: >> model = Customer >> fields = ['email'] >> >> def clean_email(self): >> email = self.cleaned_data['email'] >> cust_email = Customer.objects.filter(email=email).count() >> if cust_email: >> raise forms.ValidationError('This email is already in use.') >> return email >> >> >> >> >> *#View:* >> def send_email(request): >> if request.method == 'POST': >> form = ContactForm(request.POST) >> if form.is_valid(): >> cd = form.cleaned_data >> email = cd['email'] >> new_email = form.save(commit=True) >> to_email = form.cleaned_data['email'] # cd['email'] >> subject = 'Newsletter' >> from_email = settings.EMAIL_HOST_USER >> message = 'You Are Now Signed Up For BenGui Newsletter!' >> #send_mail(subject, message, from_email, [to_email,], >> fail_silently=False) >> return redirect('home') >> else: >> return render(request, 'home.html', context) >> >> >> >> *#customer.urls:* >> >> urlpatterns = [ >> url(r'^send-email/$', views.send_email, name='send_email'), >> ] >> >> >> #Template: >> >> <form action="{% url 'customer:send_email' %}" method="post"> >> {% csrf_token %} >> {{ form|crispy }} >> <input class='btn btn-success btn-lg btn-block' >> type='submit' value='Submit'></input> >> </form> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at https://groups.google.com/group/django-users. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/8ff5313f-3783-4897-afa7-5edd4fe1b436%40googlegroups.com >> >> <https://groups.google.com/d/msgid/django-users/8ff5313f-3783-4897-afa7-5edd4fe1b436%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/39ec5818-92b6-4b2c-ad9a-58e09acd5427%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

