[Grok-dev] RFC: Masterpage implementation without macros

Kevin Smith kevin at mcweekly.com
Thu Apr 12 14:29:06 EDT 2007

Hi List,

We're using grok for the base of the relaunch of our newspaper website. 
I'm not fond of macros, so here is an alternate masterpage 
implementation that I think is fairly easy to grok.  This sort of 
strategy might also apply in a template neutral environment. Please let 
me know what you think.

Kevin Smith
Monterey County Weekly

Note: The master template in this case is stuffed in the docstring to 
keep the example short.

-- code --
class MasterPage(grok.View):


    def _render_master(self):
        namespace = self.master.pt_getContext()
        namespace['request'] = self.request
        namespace['view'] = self
        namespace['context'] = self.context
        namespace['static'] = self.static # this might need fixing
        return self.master.pt_render(namespace)

    def content(self):
        return super(MasterPage, self).__call__()

    def __call__(self):
         return self._render_master()

class TestView(MasterPage):
    <title tal:content="view/title|default">Title</title>
    <h2 tal:content="view/title|default">Title</h2>
    <div tal:content="view/content">
    Result of render() method or template

    master = grok.PageTemplate(__doc__)

    def title(self):
        return "Master Page"

    def render(self):
        return "Success"

-- result --
    <title>Master Page</title>
    <h2>Master Page</h2>



More information about the Grok-dev mailing list