Dynamic Pages

You can render pages dynamically using Jinja templating language. To query data, you can update that context object that you pass to the template.

This can be done by adding a .py file with the same filename (e.g. index.py for index.md) with a get_context method.

Example

If you want to show a page to see users, make a users.html and users.py file in the www/ folder.

In users.py:

import frappe
def get_context(context):
    context.users = frappe.get_list("User", fields=["first_name", "last_name"])

In users.html:

<h3>List of Users</h3>
<ol>
{% for user in users %}
    <li>{{ user.first_name }} {{ user.get("last_name", "") }}</li>
{% endfor %}
</ol>

On this page