Installation¶
Ce guide explique comment ajouter sites-conformes à un projet Django existant.
Prérequis¶
Python 3.12 ou supérieur (testé sur 3.12, 3.13, 3.14)
Django 6.0 ou supérieur
Wagtail 7.2 ou supérieur
PostgreSQL
Installation via uv¶
uv add sites-conformes
(Si vous utilisez encore pip : pip install sites-conformes.)
Configuration¶
Ajoutez la configuration suivante à votre config/settings.py.
Lecture des variables d’environnement¶
Plusieurs réglages du package sont pilotés par des variables d’environnement.
Définissez un petit helper en haut de votre settings.py :
import os
from pathlib import Path
def getenv_bool(key: str, default: bool) -> bool:
try:
value = os.environ[key]
except KeyError:
return default
return value.casefold() in ("1", "true")
SF_USE_DB_STORAGE = getenv_bool("SF_USE_DB_STORAGE", False)
SF_USE_WHITENOISE = getenv_bool("SF_USE_WHITENOISE", False)
PROCONNECT_ACTIVATED = os.getenv("PROCONNECT_ACTIVATED", "") in ("1", "True")
INSTALLED_APPS¶
INSTALLED_APPS.extend([
"dsfr",
# Le package lui-même (fournit les templates de base partagés)
"sites_conformes",
# Les apps qu'il contient
"sites_conformes.core",
"sites_conformes.blog",
"sites_conformes.events",
"sites_conformes.forms",
"sites_conformes.menus",
"sites_conformes.dashboard",
# Dépendances Wagtail/tierces requises
"wagtail.contrib.settings",
"wagtail.contrib.typed_table_block",
"wagtail.contrib.routable_page",
"wagtail_modeladmin",
"wagtailmenus",
"wagtailmarkdown",
"wagtail_honeypot",
])
# Stockage des médias en base de données (Scalingo, Heroku, etc.)
if SF_USE_DB_STORAGE:
INSTALLED_APPS.append("sites_conformes.db_storage")
# Authentification ProConnect (DGFiP/DINUM)
if PROCONNECT_ACTIVATED:
INSTALLED_APPS += [
"mozilla_django_oidc",
"sites_conformes.proconnect",
]
AUTHENTICATION_BACKENDS = [
"django.contrib.auth.backends.ModelBackend",
"sites_conformes.proconnect.backends.OIDCAuthenticationBackend",
]
Context processors¶
TEMPLATES[0]["OPTIONS"]["context_processors"].extend([
"wagtailmenus.context_processors.wagtailmenus",
"sites_conformes.core.context_processors.skiplinks",
"sites_conformes.core.context_processors.mega_menus",
])
Templates et fichiers statiques¶
Le package fournit des templates de base partagés (base.html, blocs DSFR,
menus) et des assets statiques. Pour que Django les trouve via le loader
filesystem, ajoutez les chemins suivants :
import sites_conformes
PACKAGE_DIR = Path(sites_conformes.__file__).resolve().parent
TEMPLATES[0]["DIRS"].append(PACKAGE_DIR / "templates")
STATICFILES_DIRS = (PACKAGE_DIR / "static",) + tuple(STATICFILES_DIRS)
(APP_DIRS = True couvre déjà les templates spécifiques à chaque app, par
exemple sites_conformes/blog/templates/. Les ajouts ci-dessus servent
uniquement aux templates au niveau du package.)
Réglages divers¶
# Chemin d'accès à l'admin Wagtail. Par défaut côté package : "cms-admin/".
WAGTAILADMIN_PATH = os.getenv("WAGTAILADMIN_PATH", "cms-admin/")
# Hôte et protocole utilisés pour générer les URL absolues.
HOST_URL = os.getenv("HOST_URL", "localhost")
HOST_PROTO = os.getenv("HOST_PROTO", "https")
WAGTAIL_I18N_ENABLED = True
Voir Configuration pour la liste complète des réglages disponibles.
Migrations et collecte des fichiers statiques¶
python manage.py migrate
python manage.py collectstatic
Prochaines étapes¶
Configuration : réglages spécifiques