tet.viewlet package
Viewlet rendering utilities for Tet applications.
Viewlets are reusable template fragments that can be rendered from within
views. This module provides the viewlet() decorator for creating
viewlets that render a template and return HTML.
Example
Creating a viewlet class and registering it as a template global:
from pyramid.events import subscriber
from tet.viewlet import viewlet, IBeforeViewletRender
from pyramid.events import BeforeRender
class MyViewlets:
def __init__(self, request):
self.request = request
@viewlet("myapp:templates/sidebar.tk")
def sidebar(self):
return {"recent_posts": get_recent_posts(self.request)}
@viewlet("myapp:templates/user_card.tk")
def user_card(self, user):
return {"user": user}
@subscriber(BeforeRender, IBeforeViewletRender)
def add_viewlets(event):
request = event.get("request")
if request:
event["viewlets"] = MyViewlets(request=request)
In templates, use $literal() to render viewlet output:
<div class="sidebar">
$literal(viewlets.sidebar())
</div>
<div class="user-card">
$literal(viewlets.user_card(user))
</div>
- class tet.viewlet.BeforeViewletRender(system, rendering_val=None)[source]
Bases:
dictEvent fired before rendering a viewlet, allowing subscriber injection.
- tet.viewlet.get_request(self_or_request)[source]
Extract request from object (returns self.request or the object itself).
- tet.viewlet.render_fragment(tpl, dct, system)[source]
Render a template fragment with the given data and system values.
- tet.viewlet.viewlet(renderer)[source]
Decorator that creates a viewlet from a function.
The decorated function should return a dict of template variables. The viewlet renders the specified template and returns HTML.
- Parameters:
renderer – Template asset specification (e.g., ‘myapp:templates/foo.tk’)
- Returns:
Decorator that wraps the function as a viewlet