API Jinja
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.
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.