============================================= Background: how grok.View and macros interact ============================================= The template attribute and the macro shortcut convention -------------------------------------------------------- In the case of ``grok.View`` views, they subclass the Zope 3 ``BrowserPage`` objects which provide an attribute ``template``, which is the associated page template. The associated page template in turn has got an attribute ``macros``, which is a dictionary containing all the macros defined in the page template with their names as keys (or ``None``). This means, that you can also reference a macro of a ``grok.View`` using:: context//template/macros/ Grok shortens this path for you by mapping the ``macros`` dictionary keys to the associated ``grok.View``. If you define a macro ``mymacro`` in a template associated with a ``grok.View`` called ``myview``, this view will map ``mymacro`` as an attribute, so that you can ask for the attribute ``mymacro`` of the *view*, where as it is in fact an attribute of the associated template. Such, you can write in short for the above pattern:: context//macros/ View names always start with the 'eyes' (``@@``) which is a shortcut for ``++view++``.