Mezzanine et page processor

29 Jui

Dans cet article je vais vous expliquer comment overrider une view avec le CMS Mezzanine, en effet si nous voulons ajouter une logique un peu plus poussée que la création de type de page personnalisée, il nous faudrait créer une function dans notre controller (views) pour ajouter par exemple un formulaire spécifique avec validation par l'utilisateur, ou n'importe quelle logique qui sort du contexte du type de page de Mezzanine.

Comment mettre en place le page processor

Nous allons prendre un exemple simple, nous allons ajouter un formulaire dans un type de page spécifique qui ajoutera simplement le résultat du formulaire dans le contexte.
Pour commencer nous allons créer un fichier se nommant page_processors.py, c'est là où nous allons créer nos fonctions de page processor et les lier à nos modèles de pages.
Nous allons donc ajouter un formulaire simple permettant de renseigner son pseudo et par la suite ajouter le pseudo au contexte de la page.

from django import forms

from mezzanine.pages.page_processors
import processor_for
from .models import Home

class PseudoForm(forms.Form):
    pseudo = forms.CharField()

@processor_for(Home)
def pseudo_form(request, page):
    form = PseudoForm()
    if request.method == "POST":
        form = PseudoForm(request.POST)
        if form.is_valid():  
           pseudo = form.data["pseudo"]
    return {"form":form, "pseudo": pseudo}

Quelques explications

Je crée un formulaire avec un champ pseudo, ensuite je crée une function pseudo_form qui me permettra d'afficher mon formulaire dans ma page et ainsi d'y ajouter la logique, ici juste ajouter le pseudo si le formulaire est validé. Cette fonction pour qu'elle soit prise en compte par Mezzanine il faut utiliser le décorateur @processor_for(), et y ajouter en argument le modèle de la page, j'ai choisi dans l'exemple le modèle Home qui est un modèle de page personnalisé.
Par la suite j'envoie un dictionnaire avec le formulaire (form) et le pseudo au contexte pour l'ajouter à mon template.

Facile et flexible

Comme vous pouvez voir, il est assez facile d'y ajouter sa propre logique personnalisée dans Mezzanine, à l'aide du page processor, cela permet de gagner en flexibilité et contrôle pour la création de custom page qui nécessitent une logique ou un traitement spécifique. Pour plus d'infos vous pouvez consulter la documentation qui en détails le fonctionnement

Publié le: Mercredi 29 juin 2016
blog comments powered by Disqus
Monter

© Circonflex-studio - Tous droits réservés - Mentions legales
Développeur web indépendant / Webdesigner / Intégrateur
Nice - Cannes - Monaco - Antibes - côte d'azur | site valide HTML 5

Ce site à été développé en Python avec le framework Django

"http://www.cssawards.net/nominee/circonflex-studio/"