API

API Jinja

Formater des valeurs, des dates et des URL et lire des documents dans les modèles Jinja avec les méthodes fournies par Dodock.

Les modèles Jinja de Dodock (formats d'impression, modèles d'e-mail, notifications, pages web) s'exécutent dans un environnement restreint. Seules les méthodes listées ici sont disponibles dans l'objet frappe. Pour la syntaxe Jinja et des exemples de formats, voir Modèles Jinja.

Les noms de documents et les résultats des exemples sont fictifs.

L'environnement restreint est actif par défaut. La clé disable_render_safe_exec du fichier common_site_config.json le désactive pour tout le bench. Ne la changez pas sans raison : l'environnement restreint protège contre l'exécution de code depuis un modèle.

frappe.format

frappe.format(value, df=None, doc=None)

Formate une valeur brute, telle qu'elle est enregistrée dans la base, selon le type de champ et les paramètres système. frappe.format_value est un alias.

<div>{{ frappe.format('2026-09-08', {'fieldtype': 'Date'}) }}</div>

<!-- résultat avec le format de date jj-mm-aaaa -->
<div>08-09-2026</div>

frappe.format_date

frappe.format_date(date, format="long")

Formate une date en format long, dans la langue de l'utilisateur.

<div>{{ frappe.format_date('2026-09-08') }}</div>

<!-- résultat -->
<div>8 septembre 2026</div>

frappe.get_url

frappe.get_url()

Renvoie l'URL du site.

<div>{{ frappe.get_url() }}</div>

<!-- résultat -->
<div>https://mon-site.dokos.cloud</div>

frappe.get_doc

frappe.get_doc(doctype, name)

Renvoie une copie du document, sous forme de dictionnaire. Les méthodes du document (save, submit…) ne sont pas disponibles dans un modèle.

<div>
    {% set todo = frappe.get_doc('ToDo', 'a1b2c3d4e5') %}
    {{ todo.description }} - {{ todo.status }}
</div>

<!-- résultat -->
<div>
    Rappeler le client - Open
</div>

frappe.get_cached_doc et frappe.get_last_doc fonctionnent de la même façon.

frappe.get_all

frappe.get_all(doctype, filters=None, fields=None, order_by=None, limit=None)

Renvoie une liste d'enregistrements, sans contrôle des autorisations. Les paramètres sont ceux de frappe.db.get_all.

<div>
    {% set todos = frappe.get_all('ToDo', filters={'status': 'Open'}, fields=['description', 'date'], order_by='date asc') %}
    {% for todo in todos %}
    <div>
        <h3>{{ todo.description }}</h3>
        <p>Échéance : {{ frappe.format_date(todo.date) }}</p>
    </div>
    {% endfor %}
</div>

<!-- résultat -->
<div>
    <div>
        <h3>Préparer la réunion</h3>
        <p>Échéance : 8 septembre 2026</p>
    </div>
    <div>
        <h3>Relancer le devis</h3>
        <p>Échéance : 22 septembre 2026</p>
    </div>
</div>

frappe.get_list

frappe.get_list(doctype, filters=None, fields=None, order_by=None, limit=None)

Comme frappe.get_all, mais filtre les enregistrements selon les autorisations de l'utilisateur connecté.

frappe.db.get_value

frappe.db.get_value(doctype, name_ou_filtres, fieldname)

Renvoie la valeur d'un champ, ou une liste de valeurs, d'un document.

<div>
    <span>
        {% set abbr = frappe.db.get_value('Company', 'Menuiserie Élégante', 'abbr') %}
        {{ abbr }}
    </span>
    <div>
        {% set description, status = frappe.db.get_value('ToDo', 'a1b2c3d4e5', ['description', 'status']) %}
        <h3>{{ description }}</h3>
        <p>{{ status }}</p>
    </div>
</div>

<!-- résultat -->
<div>
    <span>ME</span>
    <div>
        <h3>Rappeler le client</h3>
        <p>Open</p>
    </div>
</div>

Dans un modèle, frappe.db donne aussi accès à get_list, get_all, get_single_value, get_default, exists, count et escape.

frappe.db.get_single_value

frappe.db.get_single_value(doctype, fieldname)

Renvoie la valeur d'un champ d'un type de document unique.

<div>
    <span>{{ frappe.db.get_single_value('System Settings', 'time_zone') }}</span>
</div>

<!-- résultat -->
<div>
    <span>Europe/Paris</span>
</div>

frappe.get_system_settings

frappe.get_system_settings(fieldname)

Renvoie la valeur d'un champ des Paramètres système.

<div>
    {% if frappe.get_system_settings('country') == 'France' %}
    <button>Payer par prélèvement SEPA</button>
    {% else %}
    <button>Payer par carte</button>
    {% endif %}
</div>

frappe.get_meta

frappe.get_meta(doctype)

Renvoie les métadonnées d'un type de document : champs, champ de titre, champ image… La méthode get_field reste disponible dans un modèle.

<div>
    {% set meta = frappe.get_meta('ToDo') %}
    Le type ToDo a {{ meta.fields | length }} champs.
    {% if meta.get_field('status') %}
    Il a un champ de statut.
    {% endif %}
</div>

frappe.get_fullname

frappe.get_fullname(user=None)

Renvoie le nom complet de l'utilisateur. Sans argument, renvoie le nom de l'utilisateur connecté.

<div>
    <span>{{ frappe.get_fullname('martine@example.com') }}</span>
    <span>{{ frappe.get_fullname() }}</span>
</div>

<!-- résultat -->
<div>
    <span>Martine Dupond</span>
    <span>Jean Martin</span>
</div>

frappe.render_template

frappe.render_template(template, context)

Interprète un modèle Jinja, sous forme de chemin de fichier ou de texte, avec un contexte. Le modèle inclus s'exécute aussi dans l'environnement restreint.

<div>
    <!-- interprète un fichier -->
    {{ frappe.render_template('templates/includes/footer/footer.html', {}) }}

    <!-- interprète un texte -->
    <p>{{ frappe.render_template('{{ foo }}', {'foo': 'bar'}) }}</p>
</div>

_

_(texte)

Traduit un texte dans la langue de l'utilisateur, si une traduction existe.

<p>{{ _('Invoice') }}</p>

<!-- résultat pour un utilisateur francophone -->
<p>Facture</p>

frappe.session.user

Renvoie l'identifiant de l'utilisateur de la session.

frappe.session.csrf_token

Renvoie le jeton CSRF de la session.

frappe.form_dict

Pendant une requête web, renvoie le dictionnaire des paramètres de la requête. Sinon, renvoie un dictionnaire vide.

frappe.utils.fmt_money

frappe.utils.fmt_money(amount, precision=None, currency=None, format=None)

Formate un montant selon le format de nombre et la devise.

<div>{{ frappe.utils.fmt_money(doc.grand_total, currency=doc.currency) }}</div>

<!-- résultat -->
<div>2 000,00 €</div>

frappe.utils donne accès aux fonctions de frappe.utils.data autorisées dans les scripts, comme flt, cint, getdate, add_days et money_in_words.