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
.