> -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Alan Gauld > Sent: Tuesday, October 31, 2006 4:47 PM > To: tutor@python.org > Subject: Re: [Tutor] Mapping to object attributes > > > "Mike Hansen" <[EMAIL PROTECTED]> wrote > > > I've got a web form with a lot of form fields. I'd like to be able > > to map > > the form fields to an object's attributes. I'm having a little > > trouble > > figuring out how. > > John has answered that bit. > > > There will be some fields I'll need to validate(boolean or > int), but > > the > > majority are just text fields that can be passed to the object. > > One thing you can do is store the validation functions in the > dictionary with the value. > > def intValidator(i): > try: return int(i) > except: return None > > def boolValidator(b): > try: return b and True or False > except: return None > > mapping = { 'field': (intvalue, intValidator), > 'another': (boolvalue,boolValidator)...} > > You can then access the validator like so: > > value = mapping[fieldname][0] > validator = mapping[fieldname][1] > value = validator(value) > if value == None: #ooops! > > or more concisely: > > value = mapping[fieldname][1](mapping[fieldname]0]) > > This style of validation has the "benefit" (or side-effect if you > prefer) > of converting compatible types into true types. eg. validating a > string > or float representation of an integer returns the actual integer > value. > > HTH, > > -- > Alan Gauld > Author of the Learn to Program web site > http://www.freenetpages.co.uk/hp/alan.gauld >
Thanks John and Alan. Your suggestions will make my code less nested. Mike _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor