La prémisse d’un langage de modèle est que le langage est « intégré » dans un autre document maître. C’est un langage qui permet de définir des espaces réservés qui seront remplacés plus tard dans le processus de conception. Les modèles permettent de définir des espaces réservés qui seront ultérieurement remplis et remplacés par du contenu réel. Il existe un large éventail de fonctionnalités fournies dans le cadre de la plupart des langages de modèles modernes basés sur le Web. Il est possible, par exemple, de parcourir les informations et de fournir une logique conditionnelle dans un modèle !

Mako est l’un de ces langages de modèles conçu pour optimiser à la fois les performances et la simplicité de la syntaxe. L’une des principales caractéristiques de Mako est qu’il permet de se familiariser avec d’autres langages de modèles, mais qu’il apporte des améliorations dans le but de rendre le code résultant aussi lisible que possible. Mako vous permet également d’écrire la logique Python dans les modèles, ce qui en fait l’un des langages de modélisation les mieux conçus à ce jour. Dans cet article, nous verrons comment nous pouvons intégrer Mako à Django et examinerons également certaines des erreurs que les gens rencontrent en le faisant.

Installation et configuration

Commençons et créons le projet Django et après cela, nous l’ajusterons pour les modèles mako. Tout d’abord, installez les prérequis suivants pour continuer :

pip install djangomako

L’étape suivante consiste à créer un projet Django et un exemple d’application :

django-admin startproject makoprojectcd makoproject
python manage.py startapp makoapp

Nous pouvons maintenant ajuster notre backend de paramètres pour utiliser Mako ; écrire un backend personnalisé est assez simple. Nous avons besoin d’une classe héritant de notre BaseEngine qui renverra les objets Template qu’elle contient. À l’intérieur de ces classes de modèles, nous aurons le contrôle sur la logique et le rendu du contenu, exactement comme nous le voulons.

Tout d’abord, ajoutez « djangomako » et le nom de votre application à la liste des applications installées :

# settings.py
INSTALLED_APPS = [
# ...
'djangomako',
'makoApp',
]

Ajoutez ensuite le code ci-dessous tout en bas de la section des modèles :

# settings.py
import os
TEMPLATES = [   # ...
  {
      'BACKEND': 'djangomako.backends.MakoBackend',
      'NAME': 'mako',
      'DIRS': [
          os.path.join(BASE_DIR, 'templates')
      ],
  },]

L’étape suivante consiste à ajuster le package djangomako pour notre projet car il a l’ancienne importation dans les fichiers statiques. Pour résoudre ce problème, nous devons trouver notre package djangomako, un moyen simple de le faire est de démarrer le serveur de projet avec: ‘python manage.py runserver’ et il lancera une erreur, dans l’une de ces lignes, il y aura l’emplacement de le fichier nommé ‘backend.py’. Cela ressemblerait à ceci :

C’est là que se situe la mauvaise importation. L’emplacement de ce fichier est différent pour le système de chacun, vous devez donc y naviguer vous-même, ou, si vous utilisez VScode, vous pouvez également simplement cltr + cliquer sur la ligne d’emplacement et cela ouvrira le fichier.

Maintenant, sur le fichier backends.py allez à la ligne 14, comme suggéré dans l’image ci-dessus, et changez cette ligne avec celle ci-dessous :

#Old import
from django.contrib.staticfiles.templatetags.staticfiles import static

#New import from django.templatetags.static import static

Après cela, sur le même fichier, si vous obtenez une erreur à la ligne 204, supprimez cette ligne et remplacez-la par la suivante :

#Old import
from django.core.urlresolvers import reverse

#New import
from django.urls import reverse

Maintenant, comme vérification finale pour voir si tout a fonctionné ou non, relancez le serveur :

python3 manage.py runserver  #Linux/Mac
python manage.py runserver  #Windows

Lorsque nous démarrons notre serveur local maintenant, tout se passera bien. Et avec ces informations à l’esprit, si vous souhaitez avoir un contrôle total sur ce package, vous pouvez également créer un dossier avec un fichier init dans le répertoire racine. Copiez-y backends.py et il fonctionnera comme un module Python !

Ensuite, configurez les URL dans le fichier makoproject/urls.py :

# makoproject/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('makoApp.urls'))
]

Utilisation de la bibliothèque

Et maintenant, nous pouvons enfin commencer à utiliser la bibliothèque Mako dans notre application, mais nous devrons d’abord configurer les URL correspondantes. Pour ce faire, créez un fichier appelé urls.py dans le répertoire de votre application (makoapp), puis collez-y les lignes suivantes :

# makoapp/urls.py
from django.urls import path
from .views import *

urlpatterns = [
    path('', MakoView.as_view(), name='home'),
]

Ensuite, ouvrez le fichier views.py et ajoutez-y le code suivant ; il s’agit d’une fonction simple pour afficher des noms prédéfinis, bien qu’elle puisse également être acheminée via les modèles ou les formulaires.

# views.py

from django.shortcuts import render
from django.views.generic import TemplateView  #get the mako template to views

class MakoView(TemplateView):
  template_name = "home.mako"  #define the template name

  def get_context_data(self, **kwargs):
      context = super(MakoView, self).get_context_data(**kwargs)  #get the makoview to the thempltes
      context.update({
          'names': [
              'User',
          ],
      })

      return context

Le dernier mais non le moindre est de s’assurer que nous créons un répertoire de modèles au niveau racine de notre projet et de créer un fichier « home.mako » à l’intérieur (bien que vous puissiez également utiliser l’extension .html). Après cela, vous pouvez y coller le code suivant :

#templates/home.mako

#Example to showcase the view function

<p>Welcome to mako template</p>
<ul>
  % for name in names:
      <li>${ name }</li>
  % endfor
</ul>

#Example to show Mako's integrated capablities

<%
  from random import randint
  numbers = [randint(1,10) for _ in range(10)]

%>

<ul>
  % for n in numbers:
      <li>${n}</li>
  % endfor
</ul>

Et nous avons tous terminé !

Comme vous pouvez le voir, le premier exemple affichera la fonction que nous avons créée dans les vues, qui consiste à afficher le nom prédéfini. Mais ce n’est rien de spécial, DTL pourrait aussi le faire.

Mais si vous voyez dans le deuxième exemple, il y a du code Python arbitraire écrit dans le modèle. C’est un programme simple pour imprimer 10 nombres aléatoires et il sera rendu au modèle via la balise HTML .

Résultats

Maintenant, après avoir suivi toutes les étapes ci-dessus, vous serez prêt à démarrer le serveur Web de développement Django pour afficher vos résultats. Vous pouvez démarrer le serveur à l’aide de la commande suivante :

python3 manage.py runserver  #Linux/Mac
python manage.py runserver  #Windows

Si le serveur a démarré avec succès, visitez le lien donné qui serait ce http://127.0.0.1:8000/. Et si tout fonctionnait bien, vous verriez une page comme celle-ci :

Conclusion

Mako est facile à apprendre, mais c’est aussi un moteur de template extrêmement puissant. Il a la capacité de libérer toute la puissance de Django pour créer des pages de contenu dynamiques et riches. Mais il y a certaines choses que vous devez apprendre pour l’utiliser, comme les balises. Mais compte tenu de toutes les fonctionnalités qu’il offre, cela suffit pour que beaucoup de gens commencent à l’utiliser.

Dans cet article, nous avons examiné comment nous pouvons intégrer Mako à Django et avons également examiné certaines des erreurs que les gens rencontrent en le faisant. Nous espérons que cet article vous a aidé à intégrer Mako à Django. Si vous avez d’autres questions ou préoccupations à ce sujet, veuillez nous contacter à tout moment. Si vous recherchez un langage de template à utiliser pour votre prochain projet, nous vous recommandons de jeter un œil à Mako.