I just finished reading Python 3 Web Development - Beginners Guide by Michel Anders and here is my book review.
Michel Anders is no doubt a brilliant programmer. He has managed to go through HTML, Javascript, jQuery, jQuery plugins(both using and writing), jQuery UI, CSS selectors, CSS 3, Python, CherryPy, SQL and SQLite, unit testing, writing your own ORM, and Python meta-classes all in one book! Which is the problem with this book. I doubt any one who qualifies as a beginner will be able to get any further than chapter 2. I believe the author made the mistake of not putting in enough thought about his audience when writing. But, before making my final remarks, I'll give it proper treatment by commenting on each of the chapters.
Chapter 1
Chapter 1 explained the authors reasons for choosing the tools that he did, and boy were there a lot of choices to be made. Here were the choices:
- Web framework: CherryPy
- Language: Python 3
- Javascript Library: jQuery and jQuery UI
- Database: SQLLite
- ORM: None. He's rolling his own
- Revision Control: svn
There are a lot of high level talk about the rationale of each choice and why he made them. It was a bit strange that he put the choice of using Python after the choice of using CherryPy. The first chapter is quite intimidating for beginners - there is really lots to consider when building a web app. He admits it too, but he puts in a lot of encouraging words to encourage the reader to stay focused.
Chapter 2
Chapter 2 went through the exercise of building a web-based spreadsheet application, a la Google Docs. The goal is ambitious, especially for a "hello world" program. I wondered how he was going to pull it off.
The Author covered CherryPy, jQuery/CSS selectors, a jQuery plugin called jEditable, wrote his own jQuery plugin that builds a spreadsheet which uses jEditable, CSS 3 and HTML all in this chapter. The amount of Javascript in this chapter really surprised me because in the who-is-this-book-for section, it says "introductory level knowledge of JavaScript might be useful, but is not strictly necessary". He simply tried to cram too many things in, explaining each technology only cursorily as he encounters them. I am pretty sure that he lost almost all readers in his audience with this chapter.
The Rest of the Chapters
- Writing an authentication handler, and then later authorization within CherryPy
- Using the file system as storage
- Using SQLite to replace the file system as as storage
- Using SQL directly to manipulate and query the database
- Ajax and lots more of jQuery and jQuery UI
- Unit testing in Python
- Building a hand-rolled ORM, and then improving it using meta-classes, where the phrase "make your head explode" was used
- Adding a CRUD interface to the system for his CRM, and then refining the CRM.