Structure d’un projet et des applications
Structure
Cela a déjà été abordé au chapitre Pour débuter mais voici un exemple plus complet et plus général d’arborescence d’un projet Django. Cette arborescence n’est pas complètement figée, à l’exception des applications, pour lesquelles il est recommandé de conserver cette organisation.
1. Projet
Comme nous l’avons vu au chapitre Présentation du framework Django à la section Pourquoi adopter Django ?, la structure de base d’un projet Django est la suivante :
./projet # Nom du projet
/__init__.py # (module python)
/manage.py # La commande Django de gestion du projet
/projet # Le répertoire du projet
/settings.py # La configuration du projet
/urls.py # La configuration des URL du projet
/wsgi.py # Le script WSGI pour le déploiement
/code_projet.py # Du code spécifique au projet
/static # Les fichiers statiques du projet
/templates # Les templates du projet
/module/ ...
Le fichier settings.py
Sur la base des propositions de configuration présentées au-dessus, voici un exemple de fichier de configuration compatible. Cette organisation est une proposition et cela reste parfaitement adaptable à votre façon de faire, à l’exception de ce que Django s’attend à trouver à un endroit précis dans les applications. Il s’agit de présenter un principe d’organisation pour pouvoir s’y retrouver et garder les applications réutilisables.
import os
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__)
SITE_ROOT = os.path.abspath(os.path.join(PROJECT_DIR, os.pardir))
DEBUG = True # Développement
# DEBUG=False # PRODUCTION
TEMPLATE_DEBUG = DEBUG
ADMINS = (
('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(SITE_ROOT,'db.sqlite3'),
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
# Hosts ou domaines utilisables par le site si DEBUG == False
# Voir https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
ALLOWED_HOSTS = []
# ALLOWED_HOSTS = ['www.mon-domaine.fr'] # PRODUCTION
# Timezone de l'installation.
# voir http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# Pour Windows il faut mettre la valeur de la time zone système.
TIME_ZONE = 'Europe/Paris'
# Code langue par défaut du site
# voir http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'fr-fr'
SITE_ID = 1
# Localisation des messages et activation de la traduction
USE_I18N = True
# Localisation des formats numériques, dates et heures
USE_L10N...