Gizmo(QP) extends the QP Web Framework, aiming to make rich and exacting web interfaces more manageable. To this end Gizmo(QP) supports a simple pattern for interacting user interface objects, gizmos, that know how to cooperatively participate in the page generation process. Gizmo(QP) is available under OSL v3.0.
Basic functionality provided by QP
QP, or quantum placet, latin for as much as you please, is a young but stable framework, benefiting from the several years of experience of its tried and tested predecessor, Quixote. QP provides most of what one expects from a high-level web framework:
- Mature request/response classes
- Cookies and other HTTP headers
- Flexible URL dispatching
- Forms
- Unicode templating, using QPY
- Crumbs and menus
- Error handling and Logging
- Multi-process HTTP/SCGI server
- Multi-site management
- Users and Sessions
- Authentication
- A Permissions model
The last 3 features depend on a database -- by default, QP assumes that the Durus object database is being used for persistence. Using Durus, these database-dependent features work out-of-the-box.
In addition to these functionalities, that one tends to expect from a high level web framework, QP provides other features and innovations that are maybe less known but all the more intriguing:
- The simple RespondNow pattern, to break out of path traversal.
- The spec validation module.
- Customizable URL traversal, with hooks _q_traverse() and _q_lookup() at every component. This flexibility facilitates the design of RESTful URLs and applications.
- Possibility to use any template system, easily.
- Possibility to run QP without a database, or with any database. This forfeits the out-of-the-box Durus-dependent features, mentioned above, however the DB interaction API required to achieve same with a different persistence layer is small.
- Possibility to customize the entire handling of the response to each request, by overriding the Publisher.process_hit() method (a Hit holds a request and a response).
- Pythonic conceptual integrity, that may be crudely translated to mean no magic and no bloat.
And, many other simply delightful QP features waiting to be discovered!
Gizmo(QP) extensions
The Dhi class and pattern, that makes complex DHTML pages more manageable. A dhi, or DHTML information object, is contributed to by all participants of a response, making complex DHTML pages easier to build and debug, as well as simpler to render by the client. More...
Gizmos, that are user interface objects with client-side behaviour and interaction. The gizmo api is a simple pattern for managing the server-side production of such objects, as well as to help with defining their client-side features. More...
The Gizmo Form module supports redundant client-side field validation as well as an additional json callback for a field (when the field's validation logic requires server-side business logic or data). Under Gizmo Form, all QP Form and QP Widget instances become also gizmos, while retaining all of their QP-ness, to facilitate a richer client-side behaviour. A by-product of Gizmo Form is a simplified JavaScript version of the spec generic python validation module. More...
Conveniences for building web applications with QP
Externalizes the mundane, unburdening the web page from the tasks of access control handling, the generation of all navigational information, and from templating and presentational issues. Gizmo takes care of these tasks externally and independently of the page itself. More...
Skins, to which the Publisher delegates page rendering. A Skin defines templates and manages their invocation. More...