Personal tools
You are here: Home Blog Spotlight on: megrok.traject

Spotlight on: megrok.traject

megrok.traject is a package that allows a different way to publish your models than the traversal that is most commonly used in Zope applications. By Martijn Faassen.

megrok.traject is a package that allows a different way to publish your models than the traversal that is most commonly used in Zope applications. With megrok.traject you can define explicitly what kind of URLs you want to publish your models on, instead of having to construct an object hierarchy.

A model can be anything that you want to have views for, and doesn't need to be a persistent grok.Model. In fact megrok.traject is most suitable for objects that are not stored in the ZODB, as the ZODB makes traversal easy.

What kind of models could you publish with megrok.traject then? It could be just Python objects you design yourself. In this case you can use traject.Model. You tell it under what URL pattern it should appear and how it is to be constructed, and you're done. traject.Model is very lightweight: it's just a grok.Context that can be hooked up by a "traject pattern".

Alternatively you may want to treat your models even more lightly: you may wish to hook up models that are defined by a package that is not under your control at all. You could have for instance an ORM such as SQAlchemy define the models in an entirely different package that knows nothing about how these models should be presented on the web in your application. You can then use traject.Traject to associate such models with a URL pattern in your application.

You can look at the megrok.traject documentation for more information:

http://pypi.python.org/pypi/megrok.traject

The low-level implementation is a reusable library called traject, and its documentation can give you more details:

http://pypi.python.org/pypi/traject

If you still don't understand why megrok.traject would be useful for you, don't worry. Grok's traversal method of publishing objects isn't going anywhere, and megrok.traject is just an option. If you have questions, we'd very much like to hear them on grok-dev however, so that we can improve megrok.traject and its documentation.

Volunteers who would want to write a tutorial oriented towards beginners that uses megrok.traject would also be very welcome!