My view code is fairly minimal, but I suspect it is where the bug lies: {{extend 'layout.html'}} <form> Email address: <input type="text" name="email" /><br /> Password: <input type="password" name="pwd" /><br /> Confirm password: <input type="password" name="re_pwd" /><br /> <input type="submit" /> </form>
Do I need to kinda specify the error message here as well? Thanks again. On Wednesday, March 28, 2012 8:54:55 AM UTC-4, Anthony wrote: > > I tried your code, and it works fine for me. However, the password > "Testpwd" should actually result in an error because the IS_STRONG() > validator defaults to number=1 (i.e., at least one number in the password), > and you didn't change that default. So, you should get an error on the > password field. If the error isn't showing up, perhaps there's a problem > with your view code. Have you created a custom form in the HTML? > > Anthony > > On Tuesday, March 27, 2012 11:53:37 PM UTC-4, cyan wrote: >> >> >> Thanks for the pointer. Anthony. >> >> So now I have the following in my controller: >> >> def register(): >> form = SQLFORM.factory( >> Field('email', requires=[IS_NOT_EMPTY(), IS_EMAIL(forced= >> '^.*\.edu(|\..*)$', >> error_message='email must be .edu address')]), >> Field('pwd', requires=[IS_NOT_EMPTY(), IS_STRONG(min=6, special=0, upper >> =1, >> error_message='minimum 6 characters, and at least 1 uppercase character' >> ), CRYPT()]), >> Field('re_pwd', requires=IS_EXPR('value==%s' % repr(request.vars.get( >> 'pwd', None)), >> error_message='passwords do not match'))) >> >> if form.process().accepted: >> session.email = form.vars.email >> session.pwd = form.vars.pwd >> redirect(URL('registered')) >> return dict(form=form) >> >> >> And, for testing, I input the following: >> >> a...@abc.edu >> >> Testpwd >> >> Testpwd >> >> >> I didn't get any error messages, so presumably all three validations went >> fine. However, using a debugger revealed that form.accepted is still None >> after calling process() on the form. I wonder what went wrong here. Thanks. >> On Tuesday, March 27, 2012 5:54:02 PM UTC-4, Anthony wrote: >>> >>> Here's how auth.register() does it (slightly edited): >>> >>> requires=IS_EXPR('value==%s' % repr(request.vars.get('password', None)), >>> error_message="Password fields don't match") >>> >>> Anthony >>> >>> On Tuesday, March 27, 2012 5:40:29 PM UTC-4, cyan wrote: >>>> >>>> >>>> Hi group, >>>> >>>> How do I enforce some simple validation for passwords matching on a >>>> form in a controller? All I want to do is to check the second password is >>>> the same as the first one, and here is some code I've come up so far: >>>> >>>> form = SQLFORM.factory( >>>> Field('email', requires=IS_NOT_EMPTY()), >>>> Field('pwd', requires=[IS_NOT_EMPTY(), IS_STRONG(min=6, special=0,upper >>>> =1), CRYPT()]), >>>> Field('re_pwd', requires=IS_MATCH(???))) >>>> >>>> I am attempting to use the validator 'IS_MATCH()' for the second >>>> password, but not sure how I reference the the input in the first password >>>> field of the same form. Any suggestion would be welcome. Thanks. >>>> >>>