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 <cka...@gmail.com 
> <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 django-users...@googlegroups.com <javascript:>.
>> To post to this group, send email to django...@googlegroups.com 
>> <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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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.

Reply via email to