Thursday, May 26, 2011

Re: Form validation

On Thursday, May 26, 2011 11:18:39 AM UTC+1, Nikhil Somaru wrote:
Hi all,

I am testing the form validation. When I try and submit an empty form, I get:

ValueError at /contact/

The view djangobook.contact.views.contact didn't return an HttpResponse object.

# ---------------------------------- contact.views: ---------------------------------------------------#

from django.core.mail import send_mail
from django.template import RequestContext
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from djangobook.contact.forms import ContactForm

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            send_mail(       
                cd['subject'],
                cd['message'],
                cd.get('email', 'nso...@gmail.com'),
                ['nso...@gmail.com'],
                fail_silently=False,
            )
            return HttpResponseRedirect('/contact/thanks')
    else:
        form = ContactForm()
        return render_to_response('books/contact_form.html',
                                  RequestContext(request, {'form': form})) # Required for CSRF?

# ---------------------------------- forms.py: ---------------------------------------------------#
from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField()
    email = forms.EmailField(required=False)
    message = forms.CharField()


# ---------------------------------- books/contact_form.html: ---------------------------------------------------#
<html>
<head>
    <title>Contact Us</title>
</head>
<body>
    <h1>Contact Us</h1>
    {% if form.errors %}
        <p style="color: red;">
            Please correct the error{{ form.errors|pluralize }} below.
        </p>
    {% endif %}
    <form action="" method="post">{% csrf_token %}
        <table>
            {{ form.as_table }}
        </table>
        <input type="submit" value="Submit" />
    </form>
</body>
</html>

# ------------------------------------------------------------------------------------------------------------------------------------#

Could anyone explain:
1) why the form is not validating
2) How exactly the errors will be displayed?



--
Yours,
Nikhil Somaru


You need to move the final `return render_to_response` back one indentation level.

Please fix your font size when posting here. 
--
DR.

--
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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment