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+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/8ff5313f-3783-4897-afa7-5edd4fe1b436%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to