{"id":626589,"date":"2025-09-18T06:45:23","date_gmt":"2025-09-18T05:45:23","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=pycharm&#038;p=626589"},"modified":"2025-09-18T06:45:37","modified_gmt":"2025-09-18T05:45:37","slug":"le-guide-ultime-des-templates-django","status":"publish","type":"pycharm","link":"https:\/\/blog.jetbrains.com\/fr\/pycharm\/2025\/09\/le-guide-ultime-des-templates-django\/","title":{"rendered":"Le guide ultime des templates Django"},"content":{"rendered":"<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-542829\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/PC-social-BlogFeatured-1280x720-2x-7.png\" alt=\"Le guide ultime des templates Django\" width=\"2560\" height=\"1440\" \/><\/figure>\n<p>Les templates constituent une partie essentielle du framework Django. Comprendre ce qu&#8217;ils sont et pourquoi ils sont utiles peut vous aider \u00e0 cr\u00e9er des templates fluides, adaptables et fonctionnels pour vos sites et applications <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2023\/11\/what-is-the-django-web-framework\/\" data-type=\"link\" data-id=\"https:\/\/www.jetbrains.com\/fr-fr\/pycharm\/web-development\/django\/\">Django<\/a>.<\/p>\n<p>Si vous d\u00e9couvrez ce framework et souhaitez cr\u00e9er votre premier <a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/creating-and-running-your-first-django-project.html\" target=\"_blank\" rel=\"noopener\">projet Django<\/a>, il est vital de comprendre la nature des templates. Le pr\u00e9sent guide explique tout ce qu&#8217;il est important de comprendre sur les templates Django, avec notamment les diff\u00e9rents types et comment les utiliser.<\/p>\n<h2 class=\"wp-block-heading\">Qu&#8217;est-ce que les templates Django\u00a0?<\/h2>\n<p>Les <a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/templates.html\" target=\"_blank\" rel=\"noopener\">templates Django<\/a> constituent un \u00e9l\u00e9ment fondamental du framework Django. Ils permettent de s\u00e9parer la pr\u00e9sentation visuelle de votre site de son code sous-jacent. Un template contient les \u00e9l\u00e9ments statiques de la sortie HTML voulue, ainsi que la syntaxe sp\u00e9ciale expliquant comment ins\u00e9rer le contenu dynamique.<\/p>\n<p>Enfin, les templates permettent de g\u00e9n\u00e9rer des pages web compl\u00e8tes, tandis que les requ\u00eates de base de donn\u00e9es, ainsi que d&#8217;autres t\u00e2ches de traitement, sont trait\u00e9es par les <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2025\/01\/django-views\/\" data-type=\"link\" data-id=\"https:\/\/blog.jetbrains.com\/pycharm\/2025\/01\/django-views\/\">vues<\/a> et les <a href=\"https:\/\/docs.djangoproject.com\/en\/5.1\/topics\/db\/models\/\" target=\"_blank\" rel=\"noopener\">mod\u00e8les<\/a>. Cette s\u00e9paration garantit un code net et facile \u00e0 g\u00e9rer en isolant la logique m\u00e9tier HTML du code Python dans le reste de votre projet Django. En l&#8217;absence de templates, le code HTML est int\u00e9gr\u00e9 directement dans votre code Python, o\u00f9 il est plus difficile de le lire et de le d\u00e9boguer.<\/p>\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\">\n<div class=\"wp-block-embed__wrapper\">\u00a0<\/div>\n<\/figure>\n<p>Voici un exemple de template Django contenant du code HTML, une variable <code>name<\/code> et une logique <code>if\/else<\/code> basique\u00a0:<\/p>\n<h1>Welcome!<\/h1>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n\n\n\n{% if name %}<\/pre>\n<h1>Hello, {{ name }}!<\/h1>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n\n{% else %}<\/pre>\n<h1>Hello, Guest!<\/h1>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n\n{% endif %}<\/pre>\n<h1>{{ heading }}<\/h1>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n<\/pre>\n<h3 class=\"wp-block-heading\">Avantages de l&#8217;utilisation des templates<\/h3>\n<p>Les d\u00e9veloppeurs utilisent les templates Django pour cr\u00e9er des applications fiables rapidement et efficacement. Voici les autres avantages cl\u00e9s des templates\u00a0:<\/p>\n<ul>\n<li><strong>R\u00e9utilisation du code<\/strong>\u00a0: des composants et des dispositions r\u00e9utilisables peuvent \u00eatre cr\u00e9\u00e9s pour assurer la coh\u00e9rence entre les pages et les applications.<\/li>\n<li><strong>Maintenance plus rapide<\/strong>\u00a0: l&#8217;aspect des pages web peut \u00eatre modifi\u00e9 sans toucher \u00e0 la logique sous-jacente.<\/li>\n<li><strong>Lisibilit\u00e9 accrue\u00a0:<\/strong> le code HTML peut rester propre et lisible sans avoir \u00e0 recourir \u00e0 une logique complexe.<\/li>\n<li><strong>H\u00e9ritage de template<\/strong>\u00a0: des structures et dispositions communes peuvent \u00eatre d\u00e9finies pour r\u00e9duire la duplication et promouvoir la coh\u00e9rence.<\/li>\n<li><strong>Contenu dynamique<\/strong>\u00a0: il est possible de cr\u00e9er des pages web personnalis\u00e9es qui s&#8217;adaptent aux entr\u00e9es des utilisateurs et aux variations des donn\u00e9es.<\/li>\n<li><strong>Optimisation des performances<\/strong>\u00a0: les templates peuvent \u00eatre mis en cache pour am\u00e9liorer les performances des applications ou du site web.<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\">D\u00e9fis et limitations<\/h3>\n<p>Les templates sont essentiels pour le rendu des pages web dans Django, mais ils doivent \u00eatre utilis\u00e9s de fa\u00e7on raisonn\u00e9e, notamment pour les projets complexes portant sur des ensembles de donn\u00e9es volumineux. En d\u00e9pit de la simplicit\u00e9 relative du langage de template de Django, des templates trop complexes avec un grand nombre de balises imbriqu\u00e9es, de filtres et de r\u00e8gles d&#8217;h\u00e9ritage peuvent devenir difficiles \u00e0 g\u00e9rer et \u00e0 maintenir. Au lieu d&#8217;int\u00e9grer trop de logique dans vos templates, veillez \u00e0 ce qu&#8217;ils se concentrent sur la pr\u00e9sentation. Les options de personnalisation sont \u00e9galement limit\u00e9es, ce qui vous oblige \u00e0 cr\u00e9er des balises ou des filtres.<\/p>\n<p>La migration vers un autre moteur de template peut \u00eatre difficile, car le moteur par d\u00e9faut de Django est li\u00e9 directement au <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2023\/11\/what-is-the-django-web-framework\/\">framework<\/a>. Toutefois, le recours \u00e0 une autre solution, telle que Jinja, est relativement simple, et nous reviendrons sur cette possibilit\u00e9 plus bas dans ce guide.<\/p>\n<h3 class=\"wp-block-heading\">D\u00e9bogage des templates Django<\/h3>\n<p>Dans certaines situations (notamment en cas de probl\u00e8me), il peut \u00eatre utile de voir comment votre template fonctionne. Pour cela, vous pouvez utiliser le d\u00e9bogage de template.<\/p>\n<p>Le d\u00e9bogage des templates consiste \u00e0 identifier les erreurs concernant les interactions entre le code HTML et les donn\u00e9es dynamiques. Les probl\u00e8mes courants incluent des variables manquantes, des balises de template incorrectes et des erreurs de logique.<\/p>\n<p>Heureusement, Django fournit des outils utiles, tels que <code>{{ debug }}<\/code> pour l&#8217;inspection de vos templates et des pages d&#8217;erreur d\u00e9taill\u00e9es qui mettent en \u00e9vidence la source des probl\u00e8mes. Cela facilite l&#8217;identification et la r\u00e9solution des probl\u00e8mes, afin d&#8217;assurer un rendu exact de vos templates.<\/p>\n<h2 class=\"wp-block-heading\">Compr\u00e9hension du DTL (Django Template Language)<\/h2>\n<p>Le DTL est le moteur int\u00e9gr\u00e9 de cr\u00e9ation de template de Django, con\u00e7u pour simplifier la cr\u00e9ation de pages web dynamiques. Il permet de fusionner de fa\u00e7on fluide le code HTML avec des balises et des filtres propres \u00e0 Django, ce qui vous permet de cr\u00e9er du contenu enrichi et pilot\u00e9 par les donn\u00e9es directement depuis votre <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2023\/04\/create-a-django-app-in-pycharm\/\">application Django<\/a>. Nous allons explorer les fonctionnalit\u00e9s cl\u00e9s qui font de DTL un outil puissant de cr\u00e9ation de templates.<\/p>\n<h3 class=\"wp-block-heading\">Syntaxe et structure basique de DTL<\/h3>\n<p>Les templates Django sont \u00e9crits avec une combinaison des syntaxes HTML et DTL. La structure basique d&#8217;un template Django correspond au langage de marquage HTML associ\u00e9 \u00e0 des balises et variables Django.<\/p>\n<p>Voici un exemple\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n  \n    <\/pre>\n<h1>{{ heading }}<\/h1>\n<ul>{% for item in item_list %}<\/p>\n<li>{{ item.name }}<\/li>\n<p>{% endfor %}<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n\n  \n<\/pre>\n<h3 class=\"wp-block-heading\">Variables, filtres et balises<\/h3>\n<p>Le DTL comporte plusieurs fonctionnalit\u00e9s d&#8217;utilisation des variables, des filtres et des balises\u00a0:<\/p>\n<ul>\n<li><strong>Variables<\/strong>\u00a0: les variables affichent des donn\u00e9es dynamiques dans vos templates. Elles sont entour\u00e9es par des accolades doubles, comme <code>{{ variable_name }}<\/code>.<\/li>\n<li><strong>Filtres<\/strong>\u00a0: les filtres modifient ou formatent la valeur d&#8217;une variable avant d&#8217;effectuer son rendu. Ils sont appliqu\u00e9s au moyen du caract\u00e8re pipe ( | ), comme <code>{{ variable_name|upper }}<\/code>.<\/li>\n<li><strong>Balises<\/strong>\u00a0: les balises contr\u00f4lent la logique et le flux de vos templates. Elles apparaissent dans des blocs <code>{% %}<\/code> et peuvent effectuer diff\u00e9rentes op\u00e9rations, telles que les boucles, les conditions et les inclusions de templates.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.jetbrains.com\/fr-fr\/pycharm\/web-development\/django\/\" target=\"_blank\" rel=\"noopener\">PyCharm<\/a>, un IDE professionnel de d\u00e9veloppement Django, simplifie l&#8217;utilisation des templates Django en assurant la mise en \u00e9vidence des \u00e9l\u00e9ments de syntaxe, avec des balises de code couleur, des variables et du code HTML pour une meilleure lisibilit\u00e9. Il permet \u00e9galement de d\u00e9tecter les erreurs en temps r\u00e9el, ce qui vous \u00e9vite d&#8217;oublier une balise de fermeture ou de vous tromper dans la syntaxe. Gr\u00e2ce \u00e0 la saisie semi-automatique des variables et des balises, vous pouvez coder plus vite en faisant moins d&#8217;erreurs.<\/p>\n<figure class=\"wp-block-video\"><video src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/02\/1.mov\" controls=\"controls\" width=\"300\" height=\"150\"><\/video><\/figure>\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/www.jetbrains.com\/fr-fr\/pycharm\/web-development\/django\/\" target=\"\" rel=\"noopener\">Essayer PyCharm Pro gratuitement<\/a><\/div>\n<\/div>\n<h3 class=\"wp-block-heading\">H\u00e9ritage des templates et extension des templates de base<\/h3>\n<p>Le syst\u00e8me d&#8217;h\u00e9ritage de template du framework vous permet de cr\u00e9er un template de base contenant la structure standard et la disposition de votre site web ou de votre application.<\/p>\n<p>Vous pouvez cr\u00e9er des templates enfants qui h\u00e9ritent du template de base et remplacent des blocs sp\u00e9cifiques de sections en fonction des besoins. Cela incite \u00e0 la r\u00e9utilisation du code et \u00e0 davantage de coh\u00e9rence entre diff\u00e9rents templates.<\/p>\n<p>Pour cr\u00e9er un template de base, d\u00e9finissez des blocs avec la balise <code>{% block %}<\/code>\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"><!-- base.html -->\n\n\n  \n    \n  \n  \n    {% block content %}\n    {% endblock %}\n  \n<\/pre>\n<p>Les templates enfants viennent ensuite \u00e9tendre les templates de base et remplacent certains blocs:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"><!-- child_template.html -->\n{% extends 'base.html' %}\n\n{% block title %}My Page Title{% endblock %}\n\n{% block content %}<\/pre>\n<h1>My Page Content<\/h1>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n\n  \nThis is the content of my page.\n{% endblock %}<\/pre>\n<h2 class=\"wp-block-heading\">Balises de template Django<\/h2>\n<p>Les balises constituent un \u00e9l\u00e9ment essentiel des templates Django. Elles fournissent diff\u00e9rentes fonctionnalit\u00e9s, du rendu conditionnel et des boucles, \u00e0 l&#8217;h\u00e9ritage du template et l&#8217;inclusion.<\/p>\n<p>Nous allons les examiner ici en d\u00e9tail.<\/p>\n<h3 class=\"wp-block-heading\">Balises communes de template Django<\/h3>\n<p>Django dispose de nombreuses balises de template et nous allons nous limiter aux plus fr\u00e9quentes\u00a0:<\/p>\n<ul>\n<li><code>{% if %}<\/code>\u00a0: cette balise permet d&#8217;assurer le rendu conditionnel du contenu en fonction d&#8217;une condition sp\u00e9cifique. Elle est souvent utilis\u00e9e avec les balises <code>{% else %}<\/code> et <code>{% elif %}<\/code>.<\/li>\n<li><code>{% for %}<\/code>\u00a0: la balise <code>{% for %}<\/code> permet d&#8217;effectuer une it\u00e9ration sur une s\u00e9quence, telle qu&#8217;une liste ou un ensemble de requ\u00eates, et d&#8217;effectuer le rendu du contenu pour chaque \u00e9l\u00e9ment de la s\u00e9quence.<\/li>\n<li><code>{% include %}<\/code>\u00a0: cette balise vous permet d&#8217;inclure le contenu d&#8217;un autre fichier de template dans le template actuel. Elle facilite la r\u00e9utilisation d&#8217;extraits de code de template communs sur plusieurs templates.<\/li>\n<li><code>{% block %}<\/code>\u00a0: la balise <code>{% block %}<\/code> est utilis\u00e9e en conjonction avec l&#8217;h\u00e9ritage de template. Elle d\u00e9finit un bloc de contenu qui peut \u00eatre remplac\u00e9 par des templates enfants lors de l&#8217;extension d&#8217;un template de base.<\/li>\n<li><code>{% extends %}<\/code>\u00a0: cette balise sp\u00e9cifie le template de base du template qui sera \u00e0 la source de l&#8217;h\u00e9ritage.<\/li>\n<li><code>{% url %}<\/code>\u00a0: cette balise permet de g\u00e9n\u00e9rer une URL pour un sch\u00e9ma d&#8217;URL nomm\u00e9 dans votre projet Django. Elle permet de d\u00e9coupler vos templates des chemins d&#8217;URL r\u00e9els.<\/li>\n<li><code>{% load %}<\/code>\u00a0: la balise <code>{% load %}<\/code> permet de charger les balises de template et les filtres personnalis\u00e9s depuis un module ou une biblioth\u00e8que Python, ce qui vous permet d&#8217;\u00e9tendre la fonctionnalit\u00e9 du syst\u00e8me de templates Django.<\/li>\n<\/ul>\n<p>Voici quelques exemples des nombreuses balises de template disponibles dans Django. Des balises comme <code>{% with %}<\/code>, <code>{% cycle %}<\/code>, <code>{% comment %}<\/code> ou autres peuvent fournir davantage de fonctionnalit\u00e9s pour les projets avanc\u00e9s, afin de vous aider \u00e0 cr\u00e9er plus facilement des applications efficaces et personnalis\u00e9es.<\/p>\n<h3 class=\"wp-block-heading\">Utilisation de balises de template<\/h3>\n<p>Voici un exemple d\u00e9taill\u00e9 illustrant comment utiliser des balises dans un template Django\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{% extends 'base.html' %}\n{% load custom_filters %}\n\n{% block content %}<\/pre>\n<h1>{{ page_title }}<\/h1>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n\n  {% if object_list %}<\/pre>\n<ul>{% for obj in object_list %} <!-- We truncate the object name to 25 characters. --><\/p>\n<li>{{ obj.name|truncate:25 }}<\/li>\n<p>{% endfor %}<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\n\n  {% else %}\n    \nNo objects found.\n  {% endif %}\n\n  {% include 'partials\/pagination.html' %}\n{% endblock %}<\/pre>\n<p>Dans cet exemple, nous \u00e9tendons un template de base, chargeons des filtres personnalis\u00e9s et d\u00e9finissons un bloc pour le contenu principal.<\/p>\n<p>Dans ce bloc, nous allons v\u00e9rifier si <code>object_list<\/code> existe et, si c&#8217;est le cas, nous allons ex\u00e9cuter une boucle pour afficher les noms tronqu\u00e9s de chaque objet. Nous affichons ensuite un message indiquant qu&#8217;aucun objet n&#8217;a \u00e9t\u00e9 trouv\u00e9 si la liste est vide.<\/p>\n<p>Enfin, nous incluons un template partiel pour la pagination. Ce template est un extrait de code HTML r\u00e9utilisable qui peut \u00eatre inclus dans d&#8217;autres templates, ce qui vous permet de g\u00e9rer et mettre \u00e0 jour des \u00e9l\u00e9ments communs (tels que la pagination) plus efficacement.<\/p>\n<h2 class=\"wp-block-heading\">Templates d&#8217;administration Django<\/h2>\n<p>L&#8217;interface d&#8217;administration int\u00e9gr\u00e9e de Django constitue une solution simple et intuitive de gestion des donn\u00e9es de votre application. Elle est bas\u00e9e sur un ensemble de templates d\u00e9finissant sa structure, sa disposition et son aspect.<\/p>\n<h3 class=\"wp-block-heading\">Fonctionnalit\u00e9<\/h3>\n<p>Les templates d&#8217;administration Django g\u00e8rent diff\u00e9rentes t\u00e2ches\u00a0:<\/p>\n<ul>\n<li><strong>Authentification<\/strong>\u00a0: contr\u00f4le l&#8217;authentification des utilisateurs, la connexion et la d\u00e9connexion.<\/li>\n<li><strong>Gestion de mod\u00e8les<\/strong>\u00a0: affiche la liste d&#8217;instances de mod\u00e8les et cr\u00e9e, modifie et supprime les instances en fonction des besoins.<\/li>\n<li><strong>Rendu des formulaires<\/strong>\u00a0: assure le rendu des formulaires pour cr\u00e9er et modifier des instances de mod\u00e8le.<\/li>\n<li><strong>Navigation<\/strong>\u00a0: effectue le rendu de la structure de navigation de l&#8217;interface d&#8217;administration, avec notamment le menu principal et les sous-menus propres \u00e0 l&#8217;application.<\/li>\n<li><strong>Pagination<\/strong>\u00a0: assure le rendu des commandes de pagination lors de l&#8217;affichage des listes d&#8217;instances de mod\u00e8les.<\/li>\n<li><strong>Suivi de l&#8217;historique<\/strong>\u00a0: affiche et g\u00e8re l&#8217;historique de modification des instances de mod\u00e8les.<\/li>\n<\/ul>\n<p>Les templates d&#8217;administration int\u00e9gr\u00e9s de Django cr\u00e9ent une base solide de gestion des donn\u00e9es de votre application.<\/p>\n<h3 class=\"wp-block-heading\">Personnalisation des templates d&#8217;administration<\/h3>\n<p>Les templates d&#8217;administration Django permettent de disposer directement d&#8217;une interface fonctionnelle, mais il peut \u00eatre n\u00e9cessaire de personnaliser leur aspect ou comportement en fonction des besoins de votre projet.<\/p>\n<p>Vous pouvez modifier le code pour tenir compte des directives de marque de votre projet, pour am\u00e9liorer l&#8217;exp\u00e9rience utilisateur ou ajouter des fonctionnalit\u00e9s propres \u00e0 votre application.<\/p>\n<p>Plusieurs approches sont possibles\u00a0:<\/p>\n<ul>\n<li><strong>Ignorer les templates<\/strong>\u00a0: vous pouvez ignorer les templates d&#8217;administration par d\u00e9faut en cr\u00e9ant des templates avec la m\u00eame structure de fichiers et convention de nommage en vigueur dans le r\u00e9pertoire de templates de votre projet. Django utilise ensuite automatiquement vos templates personnalis\u00e9s au lieu des templates int\u00e9gr\u00e9s.<\/li>\n<li><strong>\u00c9tendre les templates de base<\/strong>\u00a0: la plupart des templates d&#8217;administration de Django sont bas\u00e9s sur l&#8217;h\u00e9ritage \u00e0 partir d&#8217;autres templates. Vous pouvez cr\u00e9er des templates qui \u00e9tendent les templates d&#8217;administration de base et remplacent des blocs ou des sections sp\u00e9cifiques.<\/li>\n<li><strong>Options des templates<\/strong>\u00a0: Django dispose de plusieurs options de template qui permettent de personnaliser le comportement de l&#8217;interface d&#8217;administration. Cela inclut l&#8217;affichage de certains champs, en sp\u00e9cifiant ceux qui doivent \u00eatre modifiables et en d\u00e9finissant des templates personnalis\u00e9s pour des champs de mod\u00e8le sp\u00e9cifiques.<\/li>\n<li><strong>Personnalisation du site d&#8217;administration<\/strong>\u00a0: vous pouvez personnaliser l&#8217;aspect du site d&#8217;administration et son comportement en cr\u00e9ant des sous-classes \u00e0 partir de la classe <code>AdminSite<\/code> et en enregistrant votre site d&#8217;administration personnalis\u00e9 sur Django.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\">Templates d&#8217;URL dans Django<\/h2>\n<p>Les templates d&#8217;URL dans Django constituent une solution flexible pour d\u00e9finir et g\u00e9n\u00e9rer des URL pour les applications web.<\/p>\n<h3 class=\"wp-block-heading\">Comprendre les templates d&#8217;URL<\/h3>\n<p>Dans Django, vous d\u00e9finissez les sch\u00e9mas d&#8217;URL dans le fichier urls.py du projet en utilisant la fonction path du module django.urls.<\/p>\n<p>Ces sch\u00e9mas d&#8217;URL relient certains sch\u00e9mas d&#8217;URL \u00e0 des fonctions Python (vues) qui traitent les requ\u00eates HTTP correspondantes.<\/p>\n<p>Voici un exemple de sch\u00e9ma d&#8217;URL dans Django\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># urls.py\nfrom django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('', views.home, name='home'),\n    path('about\/', views.about, name='about'),\n]<\/pre>\n<p>Dans cet exemple, le sch\u00e9ma d&#8217;URL <code>\u2018 \u2018<\/code> mappe la fonction de vue <code>views.home<\/code>, tandis que le sch\u00e9ma d&#8217;URL <code>\u2018about\/\u2019<\/code> mappe la fonction de vue <code>views.about<\/code>.<\/p>\n<h3 class=\"wp-block-heading\">G\u00e9n\u00e9ration dynamique d&#8217;URL avec les templates d&#8217;URL<\/h3>\n<p>Les templates d&#8217;URL dans Django permettent d&#8217;inclure des variables ou des param\u00e8tres dans vos sch\u00e9mas d&#8217;URL. Cela signifie que vous pouvez cr\u00e9er des URL dynamiques qui repr\u00e9sentent diff\u00e9rentes instances de la m\u00eame ressource ou incluent davantage de donn\u00e9es.<\/p>\n<p>Si votre fichier urls.py inclut d&#8217;autres fichiers d&#8217;URL utilisant <code>include()<\/code>, PyCharm collecte et reconna\u00eet automatiquement toutes les routes incorpor\u00e9es, ce qui permet de s&#8217;assurer que les suggestions de nom d&#8217;URL restent exactes. Vous pouvez \u00e9galement naviguer vers les d\u00e9finitions d&#8217;URL en effectuant <em>Ctrl+Clic<\/em> sur un nom d&#8217;URL pour acc\u00e9der directement \u00e0 sa source, m\u00eame si l&#8217;URL est d\u00e9finie dans un fichier enfant.<\/p>\n<p>Nous allons voir un exemple de template d&#8217;URL avec une variable\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># urls.py\nurlpatterns = [\n    path('blog\/\/', views.year_archive, name='blog_year_archive'),\n]<\/pre>\n<p>Dans ce cas, l&#8217;URL <code>\u2018blog\/\/\u2019<\/code> inclut une variable d&#8217;ann\u00e9e de type <code>int<\/code>. Lorsqu&#8217;une requ\u00eate correspond \u00e0 ce sch\u00e9ma, Django transf\u00e8re la valeur de l&#8217;ann\u00e9e en tant qu&#8217;argument \u00e0 la fonction de vue <code>views.year_archive<\/code>.<\/p>\n<h3 class=\"wp-block-heading\">Utilisation des URL Django<\/h3>\n<p>Les URL Django constituent la base de toutes les applications et fonctionnent en liant les requ\u00eates des utilisateurs aux vues appropri\u00e9es. En d\u00e9finissant des sch\u00e9mas d&#8217;URL qui correspondent \u00e0 des vues sp\u00e9cifiques, Django permet de s&#8217;assurer que votre site reste organis\u00e9 et \u00e9volutif.<\/p>\n<h4 class=\"wp-block-heading\">Utilisation de templates d&#8217;URL avec la fonction <code>reverse<\/code> de Django<\/h4>\n<p>La fonction <code>reverse<\/code> de Django vous permet de g\u00e9n\u00e9rer des URL en fonction de leurs sch\u00e9mas d&#8217;URL nomm\u00e9s. Elle prend le nom du sch\u00e9ma d&#8217;URL comme premier argument avant les autres arguments requis et renvoie l&#8217;URL correspondante.<\/p>\n<p>En voici un exemple concret\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># views.py\nfrom django.shortcuts import render\nfrom django.urls import reverse\n\ndef blog_post_detail(request, year, month, slug):\n    # ...\n    url = reverse('blog_post_detail', args=[year, month, slug])\n    return render(request, 'blog\/post_detail.html', {'url': url})<\/pre>\n<p>La fonction reverse permet de g\u00e9n\u00e9rer l&#8217;URL du sch\u00e9ma d&#8217;URL <code>\u2018blog_post_detail\u2019<\/code> en transf\u00e9rant l&#8217;ann\u00e9e, le mois et les valeurs <a href=\"https:\/\/docs.djangoproject.com\/en\/dev\/glossary\/#term-slug\" target=\"_blank\" rel=\"noopener\">slug<\/a> comme arguments.<\/p>\n<p>Vous pouvez ensuite utiliser l&#8217;URL renvoy\u00e9e dans des templates ou d&#8217;autres parties de l&#8217;application.<\/p>\n<h4 class=\"wp-block-heading\">Utilisation des balises d&#8217;URL dans les templates Django<\/h4>\n<p>La balise de template <code>{% url %}<\/code> de Django fournit une solution \u00e9l\u00e9gante permettant de g\u00e9n\u00e9rer des URL directement dans votre template. Au lieu de coder les URL en dur, vous pouvez faire r\u00e9f\u00e9rence \u00e0 des sch\u00e9mas d&#8217;URL nomm\u00e9s, ce qui rend vos templates plus flexibles et simples \u00e0 g\u00e9rer.<\/p>\n<p>Voici un exemple\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"><a href=\"{% url 'blog_post_detail' year=2024 month=10 slug=post.slug %}\"> \nEn savoir plus \n<\/a><\/pre>\n<p>Dans ce cas, la balise <code>{% url %}<\/code> cr\u00e9e une URL pour la vue <code>blog_post_detail<\/code>, tout en transf\u00e9rant les param\u00e8tres <code>year<\/code>, <code>month<\/code> et <code>slug<\/code>. Il est important de s&#8217;assurer que ces arguments correspondent au sch\u00e9ma d&#8217;URL d\u00e9fini dans votre fichier urls.py, ce qui doit prendre la forme suivante\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">path('blog\/\/\/\/', views.blog_post_detail, name='blog_post_detail'),<\/pre>\n<p>Cette approche permet de conserver des templates nets et adaptables, notamment lorsque votre projet \u00e9volue.<\/p>\n<h2 class=\"wp-block-heading\">Templates Jinja et Django<\/h2>\n<p>Django est fourni avec un moteur de template int\u00e9gr\u00e9 (DTL), mais les d\u00e9veloppeurs ont aussi la possibilit\u00e9 d&#8217;utiliser d&#8217;autres options, telles que Jinja.<\/p>\n<p><a href=\"https:\/\/jinja.palletsprojects.com\/en\/stable\/\" target=\"_blank\" rel=\"noopener\">Jinja<\/a> est un moteur de template populaire, moderne et riche en fonctionnalit\u00e9s pour Python. D\u00e9velopp\u00e9 \u00e0 l&#8217;origine pour le framework web <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2023\/11\/django-vs-flask-which-is-the-best-python-web-framework\/\">Flask<\/a>, il est \u00e9galement compatible avec Django.<\/p>\n<p>Ce moteur a \u00e9t\u00e9 con\u00e7u pour \u00eatre rapide, s\u00e9curis\u00e9 et hautement extensible. Ses fonctionnalit\u00e9s et capacit\u00e9s riches en font un outil polyvalent pour le rendu de contenus dynamiques.<\/p>\n<p>Fonctionnalit\u00e9s et avantages cl\u00e9s de Jinja par rapport au DTL de Django\u00a0:<\/p>\n<ul>\n<li>Syntaxe plus concise et intuitive.<\/li>\n<li>Ex\u00e9cution en sandbox pour plus de protection contre les attaques par injection de code.<\/li>\n<li>Syst\u00e8me d&#8217;h\u00e9ritage plus puissant et flexible.<\/li>\n<li>Outils de d\u00e9bogage et m\u00e9canismes de rapport plus performants.<\/li>\n<li>Performances plus rapides lors de la manipulation de templates complexes ou de grands jeux de donn\u00e9es.<\/li>\n<li>Fonctionnalit\u00e9 am\u00e9lior\u00e9e avec des filtres et des macros int\u00e9gr\u00e9s, ce qui permet de b\u00e9n\u00e9ficier d&#8217;une logique de rendu plus complexe qui n&#8217;encombre pas le template.<\/li>\n<\/ul>\n<p>PyCharm peut d\u00e9tecter automatiquement le type de fichier *.jinja et mettre les \u00e9l\u00e9ments de syntaxe en \u00e9vidence, assurer la saisie semi-automatique du code et la d\u00e9tection d&#8217;erreur, ainsi que la prise en charge des filtres et des extensions personnalis\u00e9s, afin d&#8217;assurer une exp\u00e9rience de d\u00e9veloppement fluide.<\/p>\n<p>Malgr\u00e9 ces avantages, il est \u00e9galement important de rappeler que l&#8217;int\u00e9gration de Jinja dans un projet Django implique une configuration plus complexe et \u00e9tendue.<\/p>\n<p>Certains d\u00e9veloppeurs peuvent \u00e9galement pr\u00e9f\u00e9rer le moteur de template int\u00e9gr\u00e9 de Django pour ne pas quitter l&#8217;\u00e9cosyst\u00e8me Django.<\/p>\n<h3 class=\"wp-block-heading\">Codage plus rapide avec les live templates Django<\/h3>\n<p>La fonctionnalit\u00e9 live template de PyCharm permet d&#8217;ins\u00e9rer rapidement les extraits de code les plus utilis\u00e9s avec un simple raccourci clavier.<\/p>\n<p>Pour appeler les live templates, il suffit d&#8217;appuyer sur <em>\u2318J<\/em>, en tapant <code>ListView<\/code>, puis en appuyant sur la touche de tabulation.<\/p>\n<figure class=\"wp-block-video\"><video src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/02\/2-1.mov\" controls=\"controls\" width=\"300\" height=\"150\"><\/video><\/figure>\n<p>Cela r\u00e9duit le codage standard, acc\u00e9l\u00e8re le d\u00e9veloppement et garantit une syntaxe coh\u00e9rente. Vous pouvez \u00e9galement <strong>personnaliser ou cr\u00e9er vos propres templates<\/strong> en fonction des besoins propres \u00e0 votre projet. Cette fonctionnalit\u00e9 est particuli\u00e8rement utile pour la syntaxe DTL, o\u00f9 les boucles, les conditions et les structures de bloc sont fr\u00e9quemment r\u00e9p\u00e9t\u00e9es.<\/p>\n<h2 class=\"wp-block-heading\">Utilisation des templates Django\u00a0: bonnes pratiques et conseils<\/h2>\n<p>L&#8217;utilisation des templates Django constitue un excellent moyen de g\u00e9rer la couche de pr\u00e9sentation de vos applications web.<\/p>\n<p>Cependant, il est essentiel de suivre les instructions et d&#8217;appliquer les optimisations de performances pour s&#8217;assurer que vos templates sont bien g\u00e9r\u00e9s, s\u00e9curis\u00e9s et syst\u00e9matiques.<\/p>\n<p>Voici un r\u00e9sum\u00e9 des bonnes pratiques et des conseils \u00e0 prendre en compte pour les templates Django\u00a0:<\/p>\n<ul>\n<li><strong>S\u00e9parer la pr\u00e9sentation de la logique m\u00e9tier<\/strong>. Veillez \u00e0 ce que les templates servent exclusivement \u00e0 effectuer le rendu des donn\u00e9es et r\u00e9aliser le traitement complexe dans les vues et les mod\u00e8les.<\/li>\n<li><strong>Organiser vos templates logiquement<\/strong>. Appliquez la structure de fichiers de Django en s\u00e9parant les templates en fonction des applications et des fonctionnalit\u00e9s, en utilisant des sous-r\u00e9pertoires en fonction des besoins.<\/li>\n<li><strong>Utiliser les conventions d&#8217;appellation de Django<\/strong>. Django applique le principe de la \u00ab\u00a0convention primant sur la configuration\u00a0\u00bb, ce qui vous permet de nommer vos templates de fa\u00e7on sp\u00e9cifique pour ne pas fournir votre nom de template explicitement. Par exemple, lors de l&#8217;utilisation de vues bas\u00e9es sur les classes comme <code>ListView<\/code>, Django recherche automatiquement un template appel\u00e9 <strong>\/_list.html<\/strong>, ce qui simplifie votre code.<\/li>\n<li><strong>Diviser les t\u00e2ches \u00e9labor\u00e9es en composants r\u00e9utilisables.<\/strong> Incitez la r\u00e9utilisation du code et am\u00e9liorez sa maintenabilit\u00e9 en utilisant des balises de template, des filtres et des inclusions.<\/li>\n<li><strong>Appliquez des conventions de nommage coh\u00e9rentes.<\/strong> Utilisez des noms clairs et descriptifs pour vos templates, balises et filtres. Cela facilite la lecture de votre code par les autres d\u00e9veloppeurs.<\/li>\n<li><strong>Utilisez les filtres de rendu s\u00fbr de Django.<\/strong> Appliquez syst\u00e9matiquement une s\u00e9quence d&#8217;\u00e9chappement aux donn\u00e9es fournies par l&#8217;utilisateur avant le rendu pour \u00e9viter les vuln\u00e9rabilit\u00e9s XSS.<\/li>\n<li><strong>Documentez la logique complexe de template.<\/strong> Utilisez des commentaires clairs pour expliquer les parties plus complexes de vos templates. Cela aidera les autres personnes (et vous-m\u00eame \u00e0 l&#8217;avenir) \u00e0 comprendre votre code.<\/li>\n<li><strong>Profilez vos templates<\/strong>. Utilisez les outils de profilage de Django pour identifier et optimiser les goulots d&#8217;\u00e9tranglement des performances, tels que des boucles inefficaces et une logique trop complexe.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.jetbrains.com\/guide\/django\/links\/django-in-pycharm-tips-reloaded\/\" target=\"_blank\" rel=\"noopener\">Regardez cette vid\u00e9o<\/a> pour explorer les conseils de Django et les fonctionnalit\u00e9s de PyCharm en d\u00e9tail.<\/p>\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n<p>Qu&#8217;il s&#8217;agisse de cr\u00e9er un site web simple ou une application plus complexe, vous devez d\u00e9sormais savoir comment cr\u00e9er des templates Django qui enrichissent l&#8217;exp\u00e9rience utilisateur et simplifient votre processus de d\u00e9veloppement.<\/p>\n<p>Toutefois, les templates ne constituent qu&#8217;un seul composant du framework Django. Explorez nos autres <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/tag\/django\/\">articles de blog consacr\u00e9s \u00e0 Django<\/a> et les ressources qui peuvent vous aider \u00e0 <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2024\/01\/how-to-learn-django\/\">apprendre Django<\/a>, d\u00e9couvrir les <a href=\"https:\/\/blog.jetbrains.com\/pycharm\/2023\/12\/django-5-0-delight-unraveling-the-newest-features\/\">derni\u00e8res fonctionnalit\u00e9s de Django<\/a>, et bien plus encore. Vous pouvez \u00e9galement vous familiariser avec la <a href=\"https:\/\/docs.djangoproject.com\/en\/5.0\/\" target=\"_blank\" rel=\"noopener\">documentation officielle de Django<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">Prise en charge fiable de Django dans PyCharm<\/h2>\n<p>Des d\u00e9butants complets aux d\u00e9veloppeurs exp\u00e9riment\u00e9s, <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/pycharm\/web-development\/django\/\" target=\"_blank\" rel=\"noopener\" data-type=\"link\" data-id=\"https:\/\/www.jetbrains.com\/fr-fr\/pycharm\/web-development\/django\/\">PyCharm Professional<\/a> est \u00e0 votre disposition pour simplifier le workflow de d\u00e9veloppement de Django.<\/p>\n<p>L&#8217;IDE Django assure une assistance au codage propre \u00e0 Django, le d\u00e9bogage, les aper\u00e7us en direct, la navigation \u00e0 l&#8217;\u00e9chelle du projet et les fonctions de refactorisation. PyCharm inclut la prise en charge compl\u00e8te des templates Django, ce qui vous permet de les g\u00e9rer et de les modifier facilement. Vous pouvez \u00e9galement vous connecter \u00e0 votre base de donn\u00e9es en un clic et travailler de fa\u00e7on fluide avec TypeScript, JavaScript et autres frameworks frontend.<\/p>\n<p>Pour plus de d\u00e9tails sur la fa\u00e7on d&#8217;utiliser les templates Django dans PyCharm, consultez notre <a href=\"https:\/\/www.jetbrains.com\/help\/pycharm\/templates.html\" target=\"_blank\" rel=\"noopener\">documentation<\/a>. J&#8217;invite les personnes qui d\u00e9couvrent le framework Django \u00e0 lire au pr\u00e9alable notre tutoriel complet qui couvre toutes les \u00e9tapes du processus de <a href=\"https:\/\/www.jetbrains.com\/guide\/django\/tutorials\/django-aws\/setup-django\/\" target=\"_blank\" rel=\"noopener\">cr\u00e9ation d&#8217;une application Django dans PyCharm<\/a>.<\/p>\n<p>Envie d&#8217;essayer\u00a0? T\u00e9l\u00e9chargez PyCharm et profitez d&#8217;un processus de d\u00e9veloppement plus productif.<\/p>\n<div class=\"buttons\">\n<div class=\"buttons__row\"><a class=\"btn\" href=\"https:\/\/www.jetbrains.com\/fr-fr\/pycharm\/web-development\/django\/\" target=\"\" rel=\"noopener\">Essayer PyCharm Pro gratuitement<\/a><\/div>\n<\/div>\n<div>\u00a0<\/div>\n<div><i data-stringify-type=\"italic\">Auteur de l\u2019article original en anglais<\/i>\u00a0:<\/div>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/03\/evgenia-200x200.jpg\" width=\"200\" height=\"200\" alt=\"Evgenia Verbina\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                            <h4>Evgenia Verbina<\/h4>\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":626592,"comment_status":"closed","ping_status":"closed","template":"","categories":[1401,2347,8377],"tags":[963],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/pycharm\/626589"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/pycharm"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/pycharm"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=626589"}],"version-history":[{"count":4,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/pycharm\/626589\/revisions"}],"predecessor-version":[{"id":626616,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/pycharm\/626589\/revisions\/626616"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/626592"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=626589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=626589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=626589"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=626589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}