Makina Blog

Le blog Makina-corpus

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 formation

Formations Django

Formation Django avancé

À distance (FOAD) Du 9 au 13 décembre 2024

Voir la formation

Formations Django

Formation Django intégration

À distance (FOAD) 11 mai

Voir la formation

Actualités en lien

Image
Logo Drupal
11/01/2019

Drupal : un CMS pas comme les autres

Mais moi je l'aime, c'est pas de ma faute…

Voir l'article
Image
Django_wagtail
18/07/2016

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.

Voir l'article
Image
back office
03/06/2016

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.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus