Handling a Checkbox in FormEncode ++++++++++++++++++++++++++++++++++++ :Posted: 2007-09-19 22:26 :Tags: Pylons, Python Checkboxes are tricky in web applications because often you want a value of either ``True`` or ``False`` to be associated with a variable and you want to handle that with a checkbox which is either ticked or not but an unticked checkbox doesn't submit a value at all which can be a pain for validation. FormEncode can handle this situation like this:: >>> import formencode >>> >>> class MySchema(formencode.Schema): ... ticked = formencode.validators.StringBoolean(if_missing=False) You can then do:: >>> MySchema().to_python({}) {'ticked': False} >>> MySchema().to_python({'ticked': 'true'}) {'ticked': True} Both these states are handled fine by HTMLFill too:: >>> import formencode.htmlfill >>> formencode.htmlfill.render('''''', {'ticked':False}) '' >>> formencode.htmlfill.render('''''', {'ticked':True}) '' Occasionally you run into a situation where if a checkbox is ticked you want to run some extra validation. For this you can use FormEncode's ``RequireIfMissing`` or `` RequireIfPresent`` validators `documented here `_.