Django forms validation

47 views
Skip to first unread message

Lekan Wahab

unread,
May 5, 2016, 11:57:05 AM5/5/16
to django...@googlegroups.com
Hello,
Please, i have a model form in forms.py which am trying to validate and update my database with. However, for some reason the form is not being validated. I have tried everything i could think of. It just reloads the page.

views.py
from django.shortcuts import render
from information.forms import ContactForm
from django.http import HttpResponse, HttpResponseRedirect


def index(request):
form_class = ContactForm
if request.method == 'POST':
form = form_class()
if form.is_valid():
###Dummy text to check validation
return HttpResponse('Done')
return render(request, 'information/index.html', {'form': form_class})


def complete(request):
return HttpResponse("Thank you for contacting us")

models.py
 
from crispy_forms.helper import FormHelper
from django import forms
from django.core.exceptions import ValidationError
from django.forms import Form
from information.models import Contact
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout,Fieldset, HTML
from crispy_forms.bootstrap import TabHolder,Tab


class ContactForm(forms.ModelForm):
helper = FormHelper()
helper.form_tag = False
def __init__(self):
super(ContactForm, self).__init__()
for key in self.fields:
self.fields[key].required= False
self.fields[key].label = False


class Meta:
fields = '__all__'
model = Contact

Thank you.

Babatunde Akinyanmi

unread,
May 5, 2016, 5:37:13 PM5/5/16
to Django users

Hello Lekan. I have responded inline but my answer might not be a complete fix.....

On May 5, 2016 4:56 PM, "Lekan Wahab" <olam...@gmail.com> wrote:
>
> Hello,
> Please, i have a model form in forms.py which am trying to validate and update my database with. However, for some reason the form is not being validated. I have tried everything i could think of. It just reloads the page.
>
> views.py
>>
>> from django.shortcuts import render
>> from information.forms import ContactForm
>> from django.http import HttpResponse, HttpResponseRedirect
>>
>>
>> def index(request):
>>     form_class = ContactForm
>>     if request.method == 'POST':
>>         form = form_class()

The above line creates an empty form because you didn't supply anything as the data argument therefore the is_valid method will never return True. You need to instantiate it with your POST data. Try:
             form = form_class(request.POST)


>>         if form.is_valid():
>>             ###Dummy text to check validation
>>             return  HttpResponse('Done')
>>     return render(request, 'information/index.html', {'form': form_class})
>>

{'form': form_class}
form_class is not an object. Perhaps you meant {'form': form}


>>
>> def complete(request):
>>     return HttpResponse("Thank you for contacting us")
>
>
> models.py
>  
>>
>> from crispy_forms.helper import FormHelper
>> from django import forms
>> from django.core.exceptions import ValidationError
>> from django.forms import Form
>> from information.models import Contact
>> from crispy_forms.helper import FormHelper
>> from crispy_forms.layout import Layout,Fieldset, HTML
>> from crispy_forms.bootstrap import TabHolder,Tab
>>
>>
>> class ContactForm(forms.ModelForm):
>>     helper = FormHelper()
>>     helper.form_tag = False
>>     def __init__(self):
>>         super(ContactForm, self).__init__()
>>         for key in self.fields:
>>             self.fields[key].required= False
>>             self.fields[key].label = False
>>          
>>
>>     class Meta:
>>         fields = '__all__'
>>         model =  Contact
>
>
> Thank you.
>

> --
> 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.
> To post to this group, send email to django...@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/CAE6v7oeD7Qb_%2BJrhiOzRTiDJ%3DqEPAY56B86nuxdZnrv2EP%2BrdQ%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.

Lekan Wahab

unread,
May 5, 2016, 11:21:48 PM5/5/16
to django...@googlegroups.com

Hello Babatunde,
Thank you for answering my question.
I have actually done that.
But Django throws and error whenever I I instantiate form/for_class to ContactForm(request. POST).
It says it's expected only a single argumen. but two was provided.

Babatunde Akinyanmi

unread,
May 6, 2016, 5:08:18 AM5/6/16
to Django users

Good morning Lekan. My response is inline...

On May 6, 2016 4:21 AM, "Lekan Wahab" <olam...@gmail.com> wrote:
>
> Hello Babatunde,
> Thank you for answering my question.
> I have actually done that.
> But Django throws and error whenever I I instantiate form/for_class to ContactForm(request. POST).
> It says it's expected only a single argumen. but two was provided.
>

That means you defined your form class without any arguments. I've looked at your form definition and that's exactly what's happening.

>> >> class ContactForm(forms.ModelForm):
>> >>     helper = FormHelper()
>> >>     helper.form_tag = False
>> >>     def __init__(self):

# __init__ is given only one argument. You didn't supply all the other arguments needed for the form to work properly.

> To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAE6v7ofhzu7D2wv3UzK8G4vybKH3pM%3DYWK3fZFzo5Cewk7LUeA%40mail.gmail.com.

Reply all
Reply to author
Forward
0 new messages