Thanks for the reference. The problem is solved with this code
modification:

def contact(request):
    if request.method == 'POST':
        f = ContactForm(request.POST)
        if f.is_valid():
            email = f.cleaned_data['email']
            ... #send email
            return HttpResponseRedirect(reverse('contact_success'))
   else:
         f=ContactForm()

   return render_to_response(
            'post_contact.html',
            { 'form':f },
            context_instance = RequestContext(request)
        )



On Dec 31, 12:36 pm, Daniel Roseman <roseman.dan...@googlemail.com>
wrote:
> On Dec 31, 12:18 am, Chuck22 <cba...@gmail.com> wrote:
>
>
>
>
>
> > class ContactForm(forms.Form):
> >           email = forms.EmailField(required=True,
> >                              widget=forms.TextInput(attrs=
> > {'size':'30'}),
> >                             error_messages={'required':'Please fill
> > out your Email'})
> >           ...
>
> > in my form html file:
> > ...
> > label for="id_full_name">Your email address</label>
> >             {{ form.email.errors }}
> >             {{ form.email }}<br/>
> > ...
>
> > in my view:
> > def contact(request):
> >     if request.method == 'POST':
> >         f = ContactForm(request.POST)
> >         if f.is_valid():
> >             email = f.cleaned_data['email']
> >             ...
> >             return HttpResponseRedirect(reverse('contact_success'))
>
> > When user submit the contact form without fill out email field, the
> > form get submitted without displaying error message 'Please fill out
> > your Email'. Instead, I got error: The view app.views.contact didn't
> > return an HttpResponse object.
>
> > it seems f.is_valud return false, which is correct. But I think form
> > validation should kick in at this point and return error message to
> > {{ form.email.errors }} field in template. Why doesn't the validation
> > work? Did I miss anything?
>
> As Alex says, we'll need to see the full view function to really help.
> But assuming the last line what you've posted is actually the last
> line of the function, you are indeed missing something - the code to
> return something if the form fails validation.
>
> The error message you've posted tells you exactly what's happening -
> your view is not returning an HttpResponse. It's always your
> responsibility to do this - Django won't ever do something by default
> (except 404 and 500 errors). Look more closely at the example given in
> the 
> documentation:http://docs.djangoproject.com/en/dev/topics/forms/#using-a-form-in-a-...
> You'll see that in that view, the return at the end is called in both
> the case of the initial GET, and if the POST failed validation.
> --
> DR.- Hide quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to