Documentation Frappe Framework

Frappe Framework

Apps

Une app Frappe est un paquet Python qui s’appuie sur le framework. Cette page explique comment créer une app avec bench new-app, décrit sa structure de dossiers et montre comment l’installer sur un site.

4 min de lectureMis à jour le Source : docs.frappe.io

Qu’est-ce qu’une app Frappe ?

Une app Frappe est un paquet Python qui utilise Frappe Framework. Les apps Frappe vivent dans le dossier apps du dossier frappe-bench.

L’app par défaut, frappe, est elle-même une app Frappe : elle joue le rôle de framework pour toutes les autres. Toute app Frappe doit avoir une entrée dans apps.txt.

Créer une app

Frappe fournit un squelette (boilerplate) pour démarrer une nouvelle app. Pour la créer, lancez la commande suivante depuis le dossier frappe-bench :

terminal
$ bench new-app custom_app
INFO:bench.app:creating new app custom_app
App Title (default: Custom App):
App Description: Custom Frappe App
App Publisher: John Doe
App Email: [email protected]
App Icon (default 'octicon octicon-file-directory'):
App Color (default 'grey'):
App License (default 'MIT'):
'custom_app' created at /Users/johndoe/frappe-bench/apps/custom_app
INFO:bench.app:installing custom_app
INFO:bench.utils:./env/bin/pip install -q -e ./apps/custom_app

Le dossier custom_app est alors créé dans le dossier apps et ajouté à apps.txt.

Structure des dossiers d’une app

La structure de l’app ressemble à ceci :

terminal
apps/custom_app
├── MANIFEST.in
├── README.md
├── custom_app
│   ├── __init__.py
│   ├── config
│   │   ├── __init__.py
│   │   ├── desktop.py
│   │   └── docs.py
│   ├── custom_app
│   │   └── __init__.py
│   ├── hooks.py
│   ├── modules.txt
│   ├── patches.txt
│   ├── public
│   │   ├── css
│   │   └── js
│   ├── templates
│   │   ├── __init__.py
│   │   └── includes
│   └── www
├── license.txt
├── requirements.txt
├── dev-requirements.txt
├── package.json
└── setup.py

requirements.txt

Ce fichier liste les dépendances Python. Quand l’app est installée, ses dépendances le sont aussi.

dev-requirements.txt (facultatif)

Ce fichier liste les dépendances Python de développement. Sa syntaxe est la même que celle de requirements.txt. Si le mode développeur (developer mode) est activé, l’installation de l’app installe aussi ces dépendances de développement.

package.json

Ce fichier suit les dépendances Node. Pour en savoir plus, consultez la documentation npm.

customapp

C’est le dossier qui contient les fichiers source.

customapp/customapp

Quand vous créez une app, un module du même nom est créé à l’intérieur. Ce dossier correspond à ce module.

customapp/hooks.py

Ce fichier sert à se brancher sur les événements de Frappe (hooks) pour étendre ou remplacer le comportement standard du framework.

En savoir plus sur les hooks.

customapp/modules.txt

Chaque app Frappe est organisée en modules, et chaque DocType appartient à un module. Ce fichier liste les modules de l’app.

En savoir plus sur les modules.

customapp/patches.txt

Ce fichier stocke les références des correctifs (patches) exécutés pendant les migrations de base de données. Les patches s’exécutent dans l’ordre, et une seule fois.

En savoir plus sur les migrations de base de données.

customapp/public

Le dossier public est un dossier statique qui peut être servi directement par nginx en production. Les fichiers placés ici sont accessibles via l’URL /assets/custom_app/**/*.

Par exemple, le fichier public/img/logo.png est accessible via l’URL /assets/custom_app/img/logo.png.

Ce dossier stocke les assets statiques utilisés directement côté client : JS, CSS et images.

customapp/templates

Le dossier templates sert à écrire et gérer les templates Jinja. Vous pouvez les organiser comme vous voulez. Ce dossier est parcouru directement quand vous les utilisez dans des templates Jinja.

Par exemple, quand vous incluez un fragment avec {% include "templates/navbar/navbar.html" %}, Frappe cherche d’abord dans ce dossier, puis se rabat sur les autres apps.

customapp/www

Les fichiers de ce dossier correspondent directement à des pages du portail : les URL suivent la structure des dossiers.

En savoir plus sur les pages du portail.

Installer une app sur un site

Pour utiliser une app, il faut l’installer sur un site. Installer une app sur un site, c’est créer dans le site les modèles livrés avec l’app, c’est-à-dire créer les tables correspondantes dans la base de données du site.

Pour installer une app sur un site, lancez la commande suivante :

terminal
$ bench --site site_name install-app custom_app

Installing custom_app...

Pour vérifier que l’app a bien été installée, lancez :

terminal
$ bench --site site_name list-apps
frappe
custom_app

Pages liées

Apps Frappe : créer une app, structure et installation | ERPNext Lab