Makina Blog
Comment ajouter un CMS dans un Django existant avec Wagtail?
Wagtail permet d'ajouter facilement du contenu éditorial dans une application métier Django déjà en ligne.
Ajouter du contenu éditorial dans une application métier est une fonctionnalité souvent demandée, qui doit être pensée dès la conception. Heureusement, Wagtail permet de le faire facilement pour une application Django déjà en ligne.
Wagtail est un CMS (système de gestion de contenu) basé sur Django qui a l'avantage de s'intégrer très facilement dans n'importe quel projet. La manière habituelle d'installer Wagtail est de créer un site de zéro grâce à la commande `startsite` intégrée à Wagtail. Ainsi, un projet Django de zéro va être créé, mais malheureusement pour l'installer dans un projet déjà existant il n'existe pas de commande. Plusieurs petites choses nécessitent une attention particulière, que nous verrons dans cet article.
Je ne parlerai pas dan cet article de comment utiliser Wagtail en détail, mais uniquement de la configuration à faire pour l'intégrer dans un projet déjà existant.
Installation et configuration
La première étape est bien sur d'installer Wagtail :
pip install wagtail
Puis d'ajouter les nouvelles app au setting `INSTALLED_APPS` :
INSTALLED_APPS = [
[...]
'wagtail.contrib.forms',
'wagtail.contrib.redirects',
'wagtail.embeds',
'wagtail.sites',
'wagtail.users',
'wagtail.snippets',
'wagtail.documents',
'wagtail.images',
'wagtail.search',
'wagtail.admin',
'wagtail',
'modelcluster',
'taggit',
[...]
]
Il faut ensuite s'assurer que certains settings soient bien présents :
MIDDLEWARES = [
[...]
'wagtail.contrib.redirects.middleware.RedirectMiddleware',
[...]
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
WAGTAIL_SITE_NAME = 'My Example Site'
Il suffit ensuite de rajouter les urls utilisées par Wagtail :
from django.urls import path, re_path, include
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.core import urls as wagtail_urls
from wagtail.documents import urls as wagtaildocs_urls
urlpatterns = [
[...]
# URL privée de l'administration de Wagtail
path('admin_cms/', include(wagtailadmin_urls)),
# URL publique d'où les fichiers téléchargés dans les pages Wagtails seront accessibles
path('documents/', include(wagtaildocs_urls)),
# URL publique contenant le site Wagtail
re_path(r'^blog/', include(wagtail_urls)),
[...]
]
Ne pas oublier de créer les tables spécifiques à Wagtail :
./manage.py migrate
Vous pouvez maintenant créer vos modèles de Page et vos templates.
Premières pages
Tout d'abord il faut rajouter une page qui sert de racine au site, la page créée par défaut n'ayant aucun champ supplémentaire. Une fois cette page en place, vous devez créer un nouveau site Wagtail par défaut (disponible dans le menu `Paramètres / Sites`) avec cette page en racine pour afficher votre contenu depuis l'URL précédemment configurée.
Tout est prêt pour rajouter du contenu. À vous de jouer !
Retrouvez nos Formation Django ainsi que nos Réalisations Django.
Formations associées
Formations Django
Formation Django avancé
À distance (FOAD) Du 9 au 13 décembre 2024
Voir la formationFormations Django
Formation Django avancé
À distance (FOAD) Du 9 au 13 décembre 2024
Voir la formationActualités en lien
Drupal : un CMS pas comme les autres
Mais moi je l'aime, c'est pas de ma faute…
Presentation of the latest Django CMS: Wagtail
Wagtail is a quite recent Django CMS. However, its young age does not keep it from having a lot of features, which we will discover in this post.
Présentation de Wagtail, le dernier CMS Django
Wagtail est un CMS relativement récent dans l’écosystème Django. Pour autant, son jeune âge ne l’empêche pas de posséder de nombreuses fonctionnalités que nous découvrirons dans cet article.