from django import newforms as forms

class DynForm(forms.Form):    
    """
    Dynamic form that allows the user to change and then verify the data that was parsed
    """
    def setFields(self, kwds):
        """
        Set the fields in the form
        """
        keys = kwds.keys()
        keys.sort()
        for k in keys:
            self.fields[k] = kwds[k]
            
    def setData(self, kwds):
        """
        Set the data to include in the form
        """
        keys = kwds.keys()
        keys.sort()
        for k in keys:
            self.data[k] = kwds[k]
            
    def validate(self, post):
        """
        Validate the contents of the form
        """
        for name,field in self.fields.items():
            try:
                field.clean(post[name])
            except ValidationError, e:
                self.errors[name] = e.messages

#### In the view ########################################################

# Form definition
# kwargs is a dictionary. The key being the name of the field and the value 
# being the type (CharField(kwargs*))
kwargs['a_name'] = forms.CharField(label="Name", max_length=25, help_text="name")
kwargs['b_lname'] = forms.CharField(label="Last Name", help_text="lname")
kwargs['c_bday'] = forms.DateField(label="Birthday", help_text="birthday")

# Creating the form object and manipulating/validating it
form = DynForm() # Create the form
form.setFields(kwargs) # Set the fields as defined in the kwargs dictionary
form.setData(request.POST) # Set the form data
form.validate(request.POST) # validate the from 

##########################################################################