When you include a view like:

{{include 'default/sidebar.html'}}

it is not calling a sidebar() function in the default.py controller. 
Rather, it is simply including the code from the sidebar.html file at that 
point in your main view file, as if the code had been manually inserted 
there. No additional controller functions are called. For a single request, 
only one controller function is called. When that function returns, its 
view is rendered, and that view can be constructed by extending and 
including other views -- but the other views do not call their own 
controller functions.

Anthony

On Saturday, December 22, 2012 3:11:38 PM UTC-5, jonas wrote:
>
> this is probably simple but I post it anyway
>
> I have a layout that includes sidebar.html:
>
>     <section id="main" class="main row">
>   <br>
>   <br>
>         <div class="span2 left-sidebar offset1">
>   <!-- <div class="headerDivider"></div> -->
>   {{block left_sidebar}}
>   {{include 'default/sidebar.html'}}
>   {{end}}
>         </div>
>
> and sidebar.html:
>
> {{left_sidebar_enable=True}}
> <h4><i class="icon-user"></i> me (from sidebar.html):</h4>
> {{for pre in about:}}
>   {{for pr in pre.presentation.split():}}
>   <dl class="dl">
>   <dd><i class="icon-check"></i> {{=pr}}</dd>
>   </dl>
>   {{pass}}
>   <h5><i class="icon-arrow-right"></i> Contact: {{=pre.contact}}</h5>
> {{pass}}
>
> however, my controller returns variables but I cannot see them in the 
> view. When checking, the controller is not even called: 
>
> def sidebar():
>
>     query=db.about.id>0
>     ab=db(query).select()
>     print 'called sidebar'
>     return dict(ab=ab)
>
> the view is in view/default and the controller is in controller/default.py
>
> why is not the controller called?
>

-- 



Reply via email to