Nagare is a components based framework: a Nagare application is a composition of interacting components each one with its own state and workflow kept on the server. Each component can have one or several views that are composed to generate the final web page. This enables the developers to reuse or write highly reusable components easily and quickly.
Thanks to Stackless Python, Nagare is also a continuation-based web framework which enables to code a web application like a desktop application, with no need to split its control flow in a multitude of controllers and with the automatic handling of the back, fork and refresh actions from the browser.
Its component model and use of the continuation come from the famous Seaside Smalltalk framework.
Python is a great language and Nagare makes full use of it:
- the views of the components are Python methods rendering a DOM tree, built in programmatic XHTML or from a template,
- the control flow of the components is coded in Python, thanks to the continuation,
- data management in DBMS using SQLAlchemy or its declarative layer Elixir,
Furthermore Nagare integrates the best tools and standard from the Python world. For example:
- WSGI: binds the application to several possible publishers,
- lxml: generates the DOM trees and brings to Nagare the full set of XML features (XSL, XPath, Schemas ...),
- setuptools: installs, deploys and extends the Nagare framework and the Nagare applications too,
- WebOb: for its Request and Response Objects.
Using Nagare frees the developer from the classic burden of web programming:
- No more manual URL mapping. Nagare directly associates a Python callback to a link or a field of a form.
- No global session object. All the states of all components are kept on the server.
- Easy development with Nagare own Python multi-threaded server including automatic reloading and possible clustering deployment using a memcached server.
- Automatic conversion of the parameters received to Unicode and automatic generation of UTF-8 encoded web pages. Nagare is a full Unicode framework.
- Possible automatic generation of, always 100% valid, XHTML or HTML according to the browser capability.