Skip to content

Organisation

Le projet Django est organisé dans les dossiers core et conf.

Configuration

Le dossier conf contient les fichiers de configuration du projet. Les variables de configuration sont définies dans le fichier admin/configuration.md.

Core

Le dossier core contient les fichiers principaux du projet, c'est-à-dire les modèles, les vues et les formulaires, les flux, les tests, les migrations, les commandes personnalisées...

core
├── feeds
├── fixtures
├── forms
├── lib
├── management
│   └── commands
├── middleware
├── migrations
├── models
├── static
├── templates
│   └── core
├── tests
└── views

Modèles

Les modèles sont définis dans le dossier core/models. Tous les modèles doivent être importés dans le fichier core/models/__init__.py pour être accessibles depuis le module core.models.

Note

Le fichier core/models.py (organisation Django classique) n'est pas utilisé car il est plus difficile de maintenir les modèles dans un seul fichier.

Néanmoins, à cause des imports circulaires, il est parfois nécessaire de définir plusieurs modèles dans un seul fichier.

Info

Pensez à importer les modèles dans le fichier core/models/__init__.py pour faciliter l'import depuis les autres parties du projet.

Warning

Pensez à exécuter ./oto.sh migration pour générer les migrations des modèles.

Vues

Les vues sont définies dans le dossier core/views. Elles sont organisées en sous-dossiers pour faciliter la gestion des URL et des templates.

Exemple:

core/views
├── admin
│   ├── index.py
│   └── user.py
├── index.py
└── about.py

Ici, on sait que l'on pourra accéder aux pages suivantes :

  • /admin/ pour la page d'administration
  • /admin/user pour la gestion des utilisateurs
  • / pour la page d'accueil
  • /about pour la page "À propos"

Bonnes pratiques

Cette structure n'implique pas que les URLs seront définies de cette manière, mais il s'agit d'une bonne pratique de faire correspondre les URLs à la structure des dossiers.

Formulaires

Les formulaires sont définis dans le dossier core/forms.

Flux (RSS)

Les flux RSS sont définis dans le dossier core/feeds.

Warning

Les flux RSS sont instanciés avec une URL. C'est comme ça dans Django. Dans la mesure du possible, il faudra faire correspondre l'URL du flux RSS à l'URL de la vue.

Commandes personnalisées

Les commandes personnalisées sont définies dans le dossier core/management/commands.

Info

Il s'agit de l'organisation par défaut de tout projet Django.

Tests

Les tests sont définis dans le dossier core/tests. L'organisation des tests est similaire à celle du projet afin de faciliter la navigation.

Lib

Le dossier core/lib contient les fonctions utilitaires du projet.

Middleware

Le dossier core/middleware contient les middlewares du projet.

Migrations

Les migrations sont définies dans le dossier core/migrations.

Info

Il s'agit de l'organisation par défaut de tout projet Django.

Warning

Pensez à exécuter ./oto.sh migration pour générer les migrations des modèles.

Static

Le dossier core/static contient les fichiers statiques du projet.

Templates

Le dossier core/templates contient les templates du projet. L'organisation des templates suit généralement celle des vues.

Bonnes pratiques

Cette structure n'implique pas que les URLs seront définies de cette manière, mais il s'agit d'une bonne pratique de faire correspondre les URLs à la structure des dossiers.

Les templates sont placés dans le dossier core/templates/core.

Info

Certains templates peuvent être réutilisés dans plusieurs vues utilisateurs (exemple: un template pour afficher un tableau des matériels).

Ces templates sont placés dans le dossier core/templates/core/components.