The rendered form is as: <form action="" enctype="multipart/form-data" method="post"> ... </form>
It has no attribute id. On Tuesday, March 13, 2012 12:05:02 AM UTC+5:30, Anthony wrote: > > What's not working? When you view the HTML code of the rendered page in > the browser, is the id not there, or is it just that some client-side CSS > or JS isn't working as expected? If the latter, the problem could be that > you have put the form beginning and ending code inside the <table></table> > tags rather than outside, where they belong. Should be: > > {{=login_form.custom.begin}} > <table> > [snip] > </table> > {{=login_form.custom.end}} > > Anthony > > On Monday, March 12, 2012 2:07:20 PM UTC-4, Sushant Taneja wrote: >> >> Hi, >> >> I tried both but none seems to be working. Here's my view code: >> >> <div id="formContainer"> >> <table> >> {{=login_form.custom.begin}} >> <tr> >> <td >> colspan='2'>{{=login_form.custom.widget.email}}</td> >> </tr> >> <tr> >> <td >> colspan='2'>{{=login_form.custom.widget.password}}</td> >> </tr> >> <tr> >> <td><a href="#" id="flipToRecover" >> class="flipLink">Forgot Password?</a></td> >> <td>{{=login_form.custom.submit}}</td> >> </tr> >> {{=login_form.custom.end}} >> </table> >> >> Please suggest. >> >> On Monday, March 12, 2012 11:32:04 PM UTC+5:30, Anthony wrote: >>> >>> That should work. Can you show the view code? Also, note you can just do: >>> >>> login_form['_id'] = 'login' >>> >>> Anthony >>> >>> On Monday, March 12, 2012 1:19:45 PM UTC-4, Sushant Taneja wrote: >>>> >>>> I tried customizing the form. I have to set the id of the form element >>>> to login. >>>> To achieve the above I used the following statement in controller: >>>> >>>> login_form = auth.login() >>>> >>>> # Configure form properties >>>> login_form.attributes['_id']='login' >>>> >>>> But it's not working. The generated form does not contain any id >>>> attribute. >>>> Is there another way to do it ? >>>> >>>> Thanks, >>>> Sushant >>>> >>>> On Monday, March 12, 2012 8:01:33 PM UTC+5:30, Sushant Taneja wrote: >>>>> >>>>> Thanks for an explanatory answer. >>>>> I will try this out. >>>>> >>>>> On Monday, March 12, 2012 7:49:28 PM UTC+5:30, Anthony wrote: >>>>>> >>>>>> def index(): >>>>>>> >>>>>>> login_form = auth.login() >>>>>>> if login_form.process(session=None,formname='login').accepted: >>>>>>> pass >>>>>>> elif login_form.errors: >>>>>>> response.write(request.vars) >>>>>>> return dict() >>>>>>> >>>>>>> to display the form I have used the SQLForm in HTML technique as >>>>>>> mentioned in the web2py book >>>>>>> >>>>>>> Whenever user enters the correct email and password. auth_event >>>>>>> registers a login event with the description *User 1 Logged In*. >>>>>>> The next property redirects the URL to /user/profile but auth.user >>>>>>> object is *None.* >>>>>>> >>>>>> >>>>>> auth.login() handles it's own form processing, and it uses the >>>>>> session when calling form.accepts (which adds a hidden _formkey field to >>>>>> the form, which must be present upon form submission). In your code, you >>>>>> do >>>>>> not return the form object to the view, which means your view cannot >>>>>> include the hidden _formkey field, which is therefore not submitted with >>>>>> the form. So, when the form is submitted, the form.accepts in >>>>>> auth.login() >>>>>> fails, which means the user object is never stored in session.auth.user >>>>>> -- >>>>>> hence, auth.user is None. The reason the login submission is successful >>>>>> is >>>>>> that your index() function then does its own processing of the login >>>>>> form, >>>>>> which is successful -- but your explicit call to login_form.process() >>>>>> does >>>>>> not do anything to set auth.user, so it is never set. >>>>>> >>>>>> In short, you should not be doing your own processing of the login >>>>>> form -- let auth.login() handle that. And if you want to customize the >>>>>> form >>>>>> display in the view, you still have to return the form to the view so >>>>>> you >>>>>> can include the hidden _formkey and _formname fields in the form (you >>>>>> can >>>>>> use form.custom.end to do that). >>>>>> >>>>>> Anthony >>>>>> >>>>> >>> On Monday, March 12, 2012 1:19:45 PM UTC-4, Sushant Taneja wrote: >>>> >>>> I tried customizing the form. I have to set the id of the form element >>>> to login. >>>> To achieve the above I used the following statement in controller: >>>> >>>> login_form = auth.login() >>>> >>>> # Configure form properties >>>> login_form.attributes['_id']='login' >>>> >>>> But it's not working. The generated form does not contain any id >>>> attribute. >>>> Is there another way to do it ? >>>> >>>> Thanks, >>>> Sushant >>>> >>>> On Monday, March 12, 2012 8:01:33 PM UTC+5:30, Sushant Taneja wrote: >>>>> >>>>> Thanks for an explanatory answer. >>>>> I will try this out. >>>>> >>>>> On Monday, March 12, 2012 7:49:28 PM UTC+5:30, Anthony wrote: >>>>>> >>>>>> def index(): >>>>>>> >>>>>>> login_form = auth.login() >>>>>>> if login_form.process(session=None,formname='login').accepted: >>>>>>> pass >>>>>>> elif login_form.errors: >>>>>>> response.write(request.vars) >>>>>>> return dict() >>>>>>> >>>>>>> to display the form I have used the SQLForm in HTML technique as >>>>>>> mentioned in the web2py book >>>>>>> >>>>>>> Whenever user enters the correct email and password. auth_event >>>>>>> registers a login event with the description *User 1 Logged In*. >>>>>>> The next property redirects the URL to /user/profile but auth.user >>>>>>> object is *None.* >>>>>>> >>>>>> >>>>>> auth.login() handles it's own form processing, and it uses the >>>>>> session when calling form.accepts (which adds a hidden _formkey field to >>>>>> the form, which must be present upon form submission). In your code, you >>>>>> do >>>>>> not return the form object to the view, which means your view cannot >>>>>> include the hidden _formkey field, which is therefore not submitted with >>>>>> the form. So, when the form is submitted, the form.accepts in >>>>>> auth.login() >>>>>> fails, which means the user object is never stored in session.auth.user >>>>>> -- >>>>>> hence, auth.user is None. The reason the login submission is successful >>>>>> is >>>>>> that your index() function then does its own processing of the login >>>>>> form, >>>>>> which is successful -- but your explicit call to login_form.process() >>>>>> does >>>>>> not do anything to set auth.user, so it is never set. >>>>>> >>>>>> In short, you should not be doing your own processing of the login >>>>>> form -- let auth.login() handle that. And if you want to customize the >>>>>> form >>>>>> display in the view, you still have to return the form to the view so >>>>>> you >>>>>> can include the hidden _formkey and _formname fields in the form (you >>>>>> can >>>>>> use form.custom.end to do that). >>>>>> >>>>>> Anthony >>>>>> >>>>>