Maison >développement back-end >Tutoriel Python >Construire le projet RelaxTemplates : un moteur de modèles Python adapté aux débutants
La création de moteurs de modèles aide les développeurs à comprendre les fondements des systèmes de rendu Web. RelaxTemplates est un moteur de modèles léger basé sur Python qui simplifie le processus de rendu des modèles. Conçu pour être éducatif et convivial pour les débutants, RelaxTemplates illustre des concepts de base tels que la substitution de variables, les boucles, les conditions, l'héritage et les extraits réutilisables, ce qui en fait un choix idéal pour les développeurs souhaitant se plonger dans l'architecture du moteur de modèles.
RelaxTemplates est né du besoin de démystifier les moteurs de modèles, permettant aux développeurs d'explorer les fonctionnalités des modèles et de s'en inspirer. Contrairement aux moteurs prêts pour la production comme Django ou Jinja2, RelaxTemplates met l'accent sur la simplicité, donnant aux utilisateurs plus de contrôle pour expérimenter l'ajout de personnalisations ou l'extension de fonctionnalités.
RelaxTemplates fournit les fonctionnalités essentielles attendues dans les moteurs de modèles modernes :
Explorons chacune de ces fonctionnalités et comment les utiliser !
Pour commencer à utiliser RelaxTemplates, installez-le simplement depuis PyPI :
pip install relaxtemplates
Ensuite, importez le package et définissez un fichier modèle. Les modèles RelaxTemplates sont des fichiers HTML standard avec une syntaxe spéciale pour incorporer des variables, des blocs et d'autres logiques de modèle.
RelaxTemplates utilise une syntaxe simple utilisant des accolades et des balises pour définir des variables, des conditions, des boucles et d'autres éléments de modèle :
Les variables sont enveloppées dans {{ }} pour être remplacées dynamiquement par les valeurs du contexte fourni. Par exemple, la variable user_name dans le modèle suivant est remplacée par le nom de l'utilisateur.
<div>Hello, {{ user_name }}!</div>
Lorsqu'il est rendu avec un contexte tel que {'user_name' : 'Alice'}, cela génère :
pip install relaxtemplates
Les conditions dans RelaxTemplates vous permettent de restituer du contenu en fonction de conditions spécifiques. Les opérateurs pris en charge incluent >, <, >=, <=, == et !=. Voici un exemple :
<div>Hello, {{ user_name }}!</div>
Si user_age est supérieur à 18, le modèle génère le premier message ; sinon, il affiche le message alternatif.
Le bloc {% each %} parcourt les collections, offrant un moyen simple de lister des éléments ou d'afficher des sections répétitives.
<div>Hello, Alice!</div>
Pour plus de flexibilité, utilisez .. dans la boucle pour référencer les valeurs d'une portée externe. Ceci est particulièrement utile lorsque vous avez besoin de données contextuelles en dehors de l'élément actuel :
{% if user_age > 18 %} <p>Welcome, adult user!</p> {% else %} <p>Welcome, young user!</p> {% end %}
RelaxTemplates vous permet d'appeler des fonctions directement depuis vos modèles. Les fonctions peuvent accepter à la fois des arguments de position et des mots-clés.
{% each items %} <p>{{ it }}</p> {% end %}
Dans cet exemple, format_date et log sont appelés dans le modèle, permettant le formatage ou la journalisation de la date selon les besoins.
L'une des fonctionnalités les plus puissantes de RelaxTemplates est sa prise en charge de l'héritage de modèles. Cela vous permet de définir un modèle de base (par exemple, une mise en page standard) et de l'étendre dans des modèles enfants.
Modèle de base (base.html) :
{% each items %} <p>Outer name: {{ ..name }}</p> <p>Item: {{ it }}</p> {% end %}
Modèle enfant (child.html) :
<p>{% call format_date date_created %}</p> <p>{% call log 'Event logged' level='debug' %}</p>
Cette configuration permet au modèle enfant de remplacer des blocs spécifiques, comme le titre et le contenu, sans redéfinir la mise en page entière.
Utilisez {% include 'template_name' %} pour insérer des extraits de modèles réutilisables, tels qu'un en-tête ou un pied de page, dans vos modèles.
<!DOCTYPE html> <html> <head> <title>{% block title %}Default Title{% endblock %}</title> </head> <body> <div id="content"> {% block content %}Default content.{% endblock %} </div> </body> </html>
Cette fonctionnalité permet de modulariser les modèles en séparant les sections communes en fichiers individuels, réduisant ainsi la duplication et améliorant la lisibilité.
Définir un modèle et un contexte :
{% extend 'base' %} {% block title %}Custom Page Title{% endblock %} {% block content %} <p>This is custom content for the child template.</p> {% endblock %}
Rendre le modèle :
{% include 'header' %} <p>Welcome to the page!</p> {% include 'footer' %}
RelaxTemplates peut ne pas correspondre à l'optimisation de moteurs robustes comme Django ou Jinja2, mais fonctionne efficacement pour les petites applications et expérimentations. Voici une comparaison de RelaxTemplates avec d’autres moteurs :
Template | Runs | Time Taken (ms) |
---|---|---|
Relaxtemplates | 10,000 | 0.19 |
Django | 10,000 | 0.39 |
Django (default loader) | 10,000 | 0.22 |
Jinja2 | 10,000 | 3.28 |
Jinja2 (env) | 10,000 | 0.10 |
Ces résultats montrent que même si RelaxTemplates n'est pas destiné à la production, il s'agit d'une option efficace pour les tests, l'apprentissage et les applications à petite échelle.
RelaxTemplates est ouvert aux contributions, et les nouvelles idées sont toujours les bienvenues ! Que vous souhaitiez ajouter des fonctionnalités, optimiser le code ou améliorer la documentation, n'hésitez pas à explorer et expérimenter ce projet.
Bonne création de modèles avec RelaxTemplates !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!