NEW: Fenrir v1.2.2 is now available — Logo & Favicon Patch! Read the changelog
templating.md
docs templating.md

Templating

Basic Template Rendering

1
2
3
4
5
6
7
8
9
from fenrir import render_template

@app.get("/")
async def home():
    return render_template(
        "index.html",
        title="Home",
        name="Fenrir User"
    )

Template File Structure

Create templates/index.html:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>Hello, {{ name }}!</h1>
    <ul>
    {% for item in items %}
        <li>{{ item }}</li>
    {% endfor %}
    </ul>
</body>
</html>

Template with Jinja2 Features

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
from fenrir import render_template

@app.get("/blog")
async def blog_list():
    posts = [
        {"id": 1, "title": "First Post"},
        {"id": 2, "title": "Second Post"}
    ]

    return render_template(
        "blog.html",
        posts=posts,
        total=len(posts)
    )

Custom Template Renderer

1
2
3
4
5
6
7
8
from fenrir import BaseTemplateRenderer

class CustomRenderer(BaseTemplateRenderer):
    def render(self, template_name: str, **kwargs):
        # Custom rendering logic
        pass

app = Fenrir(template_renderer=CustomRenderer())
Edit on GitHub Last Updated: Jun 04, 2026
© 2026 Fenrir Project.
main*
v1.2.2
Ln 1, Col 1
UTF-8
Prettier
Light Mode
Markdown