Overview<>"Dear PHP,
It's over between us. You can keep
the kitchen sink, but I want my MVC.
With TurboGears, I was able to shed the
most heinous FileMaker Pro legacy
'solution' imaginable. It has relationships
based on fields that change frequently, causing 'disappearing
data.' I replaced it with an easy to maintain TurboGears
application. Defunkifying and normalizing many years worth of
munged data took twice as long as developing the TurboGears's
application itself. TurboGears's excellent set of tools and
best-of-breed approach makes it so easy to build applications
quickly."
—Isaac Csandl, Manager of
Information Technology, Chicago Legal Search, Ltd.
"TurboGears has resulted in
significant time savings for rPath. Before it was released, we
expected to spend significant time building a Web
framework for our rPath Appliance Agent product. TurboGears
sharpens our focus on building a quality application; it allows us
to provide more value to our customers, rather than reinventing the
Web wheel."
—Michael K. Johnson, rPath
Founding Engineer and Coauthor of Linux Application Development,
Second Edition
"I think this is the first time that
a Web framework's functionality has been so
obvious."
—Bruce Eckel, Author of
Thinking in Java and Thinking in C++
"TurboGears helped me build more
complex Web applications more quickly and with fewer headaches than
any other framework I've used. Just like Python itself, it
made me more productive with a minimal learning curve."
—Quentin Hartman, System
Administrator
"TurboGears has changed the way I
develop Web applications, from model, to view, to controller.
Thanks to the power of TurboGears, I was able to develop the first
version of WhatWhat in less than a week of my spare
time."
—Jonathan LaCour, Development
Team Lead, Optio
"TurboGears has provided a way for me
to greatly enhance my productivity by realizing the
potential of Web-based agile development with Python."
—Brandon Goldfedder, Vice
President of Engineering, Information Extraction and Transport (IET
Inc.), and Author of The Joy of Patterns
"TurboGears really changed the way I
schedule project releases: It allows me to deliver them faster and
with better quality than when I used to use GUI
toolkits."
—Jorge Godoy, Owner of G2C
Tech Consultoria in Brazil, former Lead Developer for Conectiva
documentation team
"With TurboGears, I was able to
transition my Python projects into Web applications as easily as
possible."
—Benjamin T. Hamilton,
Software Engineer
"Norwegian-based company Scanmine AS
makes extensive use of Python and Turbo-Gears in all parts of its
operation. TurboGears makes it a breeze to build highly
sophisticated Web 2.0 applications with out-of-the-box
features for multiple languages with full Unicode, REST, AJAX,
RSS/Atom, and more. This enables Scanmine to put a face on their
technology development in a minimal amount of time.
"It has been
said that there are as many Web frameworks as there are Python Web
programmers. This apparent Web framework fragmentation has long
been perceived as a weakness, until TurboGears came along and
turned weakness into strength."
—Rune Hansen, Senior Systems
Designer, Scanmine AS
"TurboGears is a well thought-out
framework; the design choices it has made will help you be more
productive. TurboGears will give you confidence with its foundation
of stable best-of-breed Python components. If you are coming from
other languages, consider working in TurboGears and Python to bring
fun back into your Web development work."
—Jeff Marshall, Partner with
FrozenBear
"When we started developing Oprius
Foundations with TurboGears, we weren't sure if it really
would help us develop quicker and higher-quality code. After two
months, we had a task manager to rival Tada List. After seven
months, we had an entire contact management system to compete with
the big boys."
—Jason Chu, Lead Developer,
Oprius Software Inc.
"Conventional programming wisdom
states that rewriting any working project from scratch is a bad
idea. TurboGears was good enough to convince me to do this anyway,
and I have been nothing but thrilled with the results. With
TurboGears, I was able to implement an AJAX-based Web site with a
nice Web API more easily than I ever thought possible. If you are
trying to do either of those in Python, you owe it to
yourself to look at this project. Using TurboGears was
one of the few times in my programming career where a
task was significantly less complicated than I thought
possible."
—Adam Jones, Lead Programmer,
RecursiveThought Software
Master TurboGears: The Easy Python
Framework for Rapid Web Development
TurboGears harnesses the power of Python to
provide a dynamic and easy-to-use Web development framework: one
that
dramatically increases developer productivity, and makes it far
easier to create dynamic, user-friendly, Ajax-enabled Web
applications. Now, for the first time, there's a definitive
guide to TurboGears—coauthored by its creator, Kevin
Dangoor.
This book will help experienced Web
developers get productive with TurboGears—fast.
You'll quickly build your first TurboGears Web
application—then extend it one step at a time, mastering the
underlying libraries that make these enhancements possible. Next,
the authors demonstrate TurboGears at work in a real-world
application, by examining the code for "WhatWhat
Status," an open source project status tracking application.
Finally, you'll gain deep insight into the model, view, and
controller technologies TurboGears is built upon: knowledge that
will help you build far more robust and capable Python
applications.
Coverage includes
Understanding the architecture of a TurboGears application
Mastering SQLObject, customizing it, and using it with
TurboGears models
Utilizing TurboGears view technologies, including dynamic
templates and MochiKit for Ajax
Bringing CSS, XHTML, and JavaScript together in reusable
components with TurboGears Widgets
Using CherryPy and TurboGears controller technologies: from
decorators to deployment
Exploring the TurboGears toolbox
Ensuring security and managing user access permissions in
TurboGears applications
Preface xxiii
Acknowledgments xxv
Part I: TurboGears Fundamentals
Chapter 1: Introduction to TurboGears
3
Chapter 2 Getting Started with TurboGears
13
Chapter 3: The Architecture of a TurboGears
Application 25
Part II: Building a Simple TurboGears
Application
Chapter 4: Creating a Simple Application
43
Chapter 5: Enhancing Our Bookmark
Application 59
Part III: Exploring a Real World
TurboGears Application
Chapter 6: Exploring More Complex Models in
WhatWhat Status 83
Chapter 7: Controllers, Views, and
JavaScript in the WhatWhat Status 97
Chapter 8: RSS, Cookies, and Dynamic Views
in WhatWhat Status 115
Chapter 9: Ajax and WhatWhat Status
Projects 133
Part IV: SQLObject and TurboGears
Models
Chapter 10: SQLObject Basics 151
Chapter 11: Mastering SQLObject
165
Chapter 12: Customizing SQLObject Behavior
183
Part V: TurboGears View
Technologies
Chapter 13: Dynamic Templates with Kid
209
Chapter 14: Creating Better JavaScript with
MochiKit 225
Chapter 15: Effective Ajax with MochiKit
273
Chapter 16: TurboGears Widgets: Bringing
CSS, XHTML, and JavaScript Together in Reusable Components .
309
Part VI: CherryPy and TurboGears
Controller Technologies
Chapter 17: CherryPy and TurboGears
Decorators 335
Chapter 18: TurboGears Deployment
355
Part VII: TurboGears Extras Chapter 19
The TurboGears Toolbox and Other Tools 371
Chapter 20: Internationalization
383
Chapter 21: Testing a TurboGears
Application 397
Chapter 22: TurboGears Identity and
Security 417
Part VIII: Appendix
Appendix: SQLAlchemy 431
Index 449