On Mon, Mar 1, 2010 at 4:52 AM, George Oliver <[email protected]> wrote: > hi, as a beginner with Python, JavaScript, and webpy I've attempted to > write a brief introduction to combining these things, for someone at a > similar level as myself. What would be great though is if someone > could run an experienced eye over it for any glaring errors. The link > is: > > http://kooneiform.wordpress.com/2010/02/28/python-and-ajax-for-beginners-with-webpy-and-jquery/ > > As it took some legwork to integrate this information into one spot, > I'm hoping other beginners can make use of it.
First of all, it's very useful material. People keep asking about AJAX in this group, so it's a good thing we can refer them to your article. Now, the criticism. :) Maybe I'm nitpicking a bit here, but: 1. web.py not webpy 2. it's weird that you call your app file server.py. Someone might get an impression you're writing a customized stand-alone server of some sort. You might call the file app.py or code.py (I prefer the first one, because it's self-evident), or my_project_name.py. 3. We don't override the GET and POST methods. We just write them. The classes such as your ``project`` class are not subclasses of anything, so there is no override. 4. It's a bit weird that you create a separate form for just the submit button, although it's not illegal or anything. Just a bit off. Just finished reading the whole article, and I still don't see any reason why your button can't be in the same form as the text box. I usually hard-code the submit button in my template because I might want to change it depending on some factors (like show "preview", and once that is clicked, change it to "submit", and add "continue editing"). 5. Overriding built-in keywords like ``input`` is not a good thing (http://docs.python.org/library/functions.html#input). You should have used another variable name for the ``input``. You can see even in your code highlighting that input is a 'reserved' word. Of course, it's not illegal, and it works. It's just that you loose the built-in input if you do that. 6. "It’s important to define a copy of the form elements (I’m not totally clear why this is so in webpy;" You don't really create a copy of the form elements. You just call the form class instance, and it makes the copy of itself for you. If you supply arguments to the call, it also does validation. For beginners, though, I think this is not important at all, actually. 7. In ``POST``, you should supply the default value to ``web.input()``, like ``web.input(input='some value')``, so that your code doesn't fail. You can't just assume that the POST request comes from the page you served. 8. If you're using forms, you can also access data submitted by the form using the form instance. And that is a better way to do things, especially if you take time to write validation routines for your form. It also auto-extracts code from the web.input() for you. 9. "An additional note about $ is that you need to use $: if the expression will contain some HTML that you don’t want escaped." You should move this to the part where you're actually using it (rendering form elements). 10. To prevent a user for sending multiple AJAX requests, simply disable the button on click, and enable it when request is finished and data loaded. Regards, -- Branko Vukelić http://foxbunny.tumblr.com/ http://www.flickr.com/photos/16889...@n04/ http://www.twitter.com/foxbunny http://github.com/foxbunny -- You received this message because you are subscribed to the Google Groups "web.py" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/webpy?hl=en.
