{"id":7004,"date":"2022-11-24T21:55:48","date_gmt":"2022-11-24T20:55:48","guid":{"rendered":"https:\/\/www.sviluppomania.com\/it\/?p=7004"},"modified":"2025-12-01T21:16:45","modified_gmt":"2025-12-01T20:16:45","slug":"jinja2-tutorial-parte-1","status":"publish","type":"post","link":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/","title":{"rendered":"JINJA2 Tutorial: parte 1"},"content":{"rendered":"<p>In quest\u2019articolo parleremo di Jinja il motore di template usato nell\u2019ecosistema Python. Creato nel 2008 da Armin Ronacher, lo stesso ideatore del micro framework Flask. Esso viene usato per creare documenti dinamici unendo modelli statici (templates) con dati variabili, le sue applicazioni le ritroviamo in particolare modo in applicativi web quali Flask, Bottle, Django e tool come Ansible e Pellican, ma non solo, lo si pu\u00f2 utilizzare anche direttamente su programmi in ambiente Python. Spesso chiamato anche banalmente Jinja2 in riferimento alla sua versione di rilascio, ha lo scopo principale di dividere l\u2019aspetto grafico dal codice logico, rendendo la struttura del programma pi\u00f9 pulita e meglio mantenibile. Jinja \u00e8 un progetto opensource, indipendente, e sempre in continuo aggiornamento, risulta essere sicuro, affidabile, mantenibile, ricco di funzionalit\u00e0 e semplice da usare. lo scopo \u00e8 quello di unire modelli di testo e grafica ad una business logica che restituisce dati come variabili, liste, dizionari, oggetti, elementi Json. Con Jinja si possono creare documenti di testo o di markup quali Html, Json, Xml, Csv, Txt, Latex, ecc\u2026<\/p>\r\n<h2>Cos\u2019\u00e8 un template<\/h2>\r\n<p>Prima di procedere con gli esempi e\u2019 opportuno soffermarsi sul definire cos\u2019e\u2019 un template. Un template (sagoma, calco) \u00e8 la struttura di un documento composto da righe di testo predefinite, situate in una determinata posizione, con spazzi vuoti da riempire con dati variabili. L\u2019impaginazione del documento detto layout rimane invariato, cambiano solo i dati.<\/p>\r\n<figure id=\"attachment_7006\" aria-describedby=\"caption-attachment-7006\" style=\"width: 479px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i.ibb.co\/2nWPmNr\/Documento-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/ywAAAAAAQABAAACAUwAOw==\" fifu-lazy=\"1\" fifu-data-sizes=\"auto\" fifu-data-srcset=\"https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=75&resize=75&ssl=1 75w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=100&resize=100&ssl=1 100w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=150&resize=150&ssl=1 150w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=240&resize=240&ssl=1 240w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=320&resize=320&ssl=1 320w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=500&resize=500&ssl=1 500w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=640&resize=640&ssl=1 640w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=800&resize=800&ssl=1 800w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=1024&resize=1024&ssl=1 1024w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=1280&resize=1280&ssl=1 1280w, https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1&w=1600&resize=1600&ssl=1 1600w\" class=\"wp-image-7006 size-full\" fifu-data-src=\"https:\/\/i2.wp.com\/i.ibb.co\/2nWPmNr\/Documento-1.png?ssl=1\" alt=\"Template\" width=\"479\" height=\"419\" \/><\/a><figcaption id=\"caption-attachment-7006\" class=\"wp-caption-text\"><strong>Fig. 1<\/strong><\/figcaption><\/figure>\r\n<p>In Fig. 1 si pu\u00f2 vedere un esempio di template con parti di testo predefinite e parti variabili. Nel campo web i template sono dei documenti di esempio per lo sviluppo di altre pagine web con grafiche e formattazione identiche ma con contenuti diversi. Adesso che abbiamo visto che cosa sono i template vediamo cosa fa Jinja. Jinja genera dei blocchi di testo dinamici in una struttura predefinita, quindi il tutto si basa su due grandi attori che sono il template e i dati. I template formati da grafiche, strutture predefinite con situati in essi dei segnaposto che andranno sostituiti dai dati. E i dati che possono essere delle semplici variabili, delle liste, dei dizionari o degli oggetti presi da un database, oppure documenti Json o di altro tipo, ci possono essere anche dati generati dinamicamente attraverso degli algoritmi.<\/p>\r\n<p>&nbsp;<\/p>\r\n<p style=\"text-align: center;\"><a href=\"https:\/\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/ywAAAAAAQABAAACAUwAOw==\" fifu-lazy=\"1\" fifu-data-sizes=\"auto\" fifu-data-srcset=\"https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=75&resize=75&ssl=1 75w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=100&resize=100&ssl=1 100w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=150&resize=150&ssl=1 150w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=240&resize=240&ssl=1 240w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=320&resize=320&ssl=1 320w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=500&resize=500&ssl=1 500w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=640&resize=640&ssl=1 640w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=800&resize=800&ssl=1 800w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=1024&resize=1024&ssl=1 1024w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=1280&resize=1280&ssl=1 1280w, https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1&w=1600&resize=1600&ssl=1 1600w\" class=\"wp-image-7008 size-full aligncenter\" fifu-data-src=\"https:\/\/i3.wp.com\/i.ibb.co\/qr1BWvQ\/Diagramma-senza-titolo-drawio.png?ssl=1\" alt=\"Diagramma\" width=\"100%\" height=\"431\" \/><\/a> <strong>Fig. 2<\/strong><\/p>\r\n<p>La visualizzazione dei dati in un template \u00e8 detta rendering. Jinja oltre che gestire il rendering dei dati ha anche altre funzionalit\u00e0 quali:<\/p>\r\n<ul>\r\n<li>Tag che contengono codice strutturato (strutture di controllo e cicli) ;<\/li>\r\n<li>L\u2019ereditariet\u00e0 dei template (il template inheritance) ;<\/li>\r\n<li>L\u2019uso di Macros ;<\/li>\r\n<li>Un sistema di auto-escaping del codice ;<\/li>\r\n<li>Una Sandbox per rendere il codice pi\u00f9 sicuro ;<\/li>\r\n<li>Filtri ;<\/li>\r\n<li>Test ;<\/li>\r\n<li>Un supporto Unicode .<\/li>\r\n<\/ul>\r\n<h2>Installazione<\/h2>\r\n<p>L\u2019installazione di Jinja \u00e8 molto semplice, basta aprire una shell e usare l\u2019installer di python pip, digitando il seguente codice.<\/p>\r\n<pre class=\"wp-block-code\"><code>pip install jinja2<\/code><\/pre>\r\n<p>Ovviamente l\u2019 installazione del package andrebbe fatta in un ambiente virtuale, per tenere i progetti ben separati tra loro, evitando conflitti tra versioni varie.<\/p>\r\n<h2>Esempi<\/h2>\r\n<p>Vediamo ora come utilizzare Jinja2 tramite alcuni esempi. Prima per\u00f2 vediamo un po&#8217; come vengono definiti i segnaposto nel modello.<\/p>\r\n<p>Per renderizzare semplici variabili bisogna inserire il dato dinamico tra doppie parentesi graffe {{}}<\/p>\r\n\r\n<pre class=\"wp-block-code\"><code>&lt;p&gt;Tra le parentesi graffe viene visualizzata la variabile {{miaVariabile}}&lt;\/p&gt;<\/code><\/pre>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<p>Per usare strutture di controllo o cicli usare i seguenti tag di apertura e chiusure {% struttura %} {% endstruttura %}<\/p>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<pre class=\"wp-block-code\"><code>{<strong>* struttura di controllo *<\/strong>}\r\n{% if true %}\r\n   print(\"ok\")\r\n{% else %}\r\n   print(\"nok)\r\n{% endif %}\r\n\r\n{<strong>* ciclo for *<\/strong>}\r\n{% for a in range(1,10) %}\r\n   print(a)\r\n{% endfor %}<\/code><\/pre>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<p>Per scrivere dei commenti usare il {* &#8230;commento&#8230; *}<\/p>\r\n\r\n<h3><strong>Esempio di template base.<\/strong><\/h3>\r\n<p>Vediamo come creare un template base. Dopo aver installato la libreria Jinja, creiamo una cartella con un nome a piacere, all\u2019interno di essa creiamo un file chiamato main.py che \u00a0conterr\u00e0 il codice per creare il motore di renderizzazione del documento.<\/p>\r\n\r\n<pre class=\"wp-block-code\"><code>import jinja2\r\nenvironment = jinja2.Environment()\r\ntemplate = environment.from_string(\"Hello, {{ name }}!\")\r\nprint(template.render(name=\"World\"))<\/code><\/pre>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<p>Proviamo a lanciare il programma da shell con il comando<\/p>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<pre class=\"wp-block-code\"><code>python main.py<\/code><\/pre>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<p>E vediamo stampata a video la scritta Hello, World!, ecco che abbiamo appena generato il nostro primo documento da una stringa in parte statica e in parte dinamica.<\/p>\r\n<h3><strong>Esempio di template da un file<\/strong><\/h3>\r\n<p>Per questo esempio ci avvalleremo dell\u2019uso dell\u2019HTML per generare pagine web dinamiche. Riprendiamo il progetto appena creato e aggiungiamo una cartella chiamata templates e all\u2019interno di essa un file chiamato index.html che sar\u00e0 il modello da cui genereremo il documento. Ora scriviamo un po\u2019 di codice. Modifichiamo il file main.py con il seguente listato.<\/p>\r\n<pre class=\"wp-block-code\"><code>from jinja2 import Environment, PackageLoader, select_autoescape, FileSystemLoader\r\nimport webview\r\n\r\n<strong>* Salvo in una variabile la cartella dove risiedono i vari file 'templates'\r\n* Che possono essere html, xml, csv, json, latex, txt, ecc...<\/strong>\r\nfile_loader = FileSystemLoader('templates')\r\n\r\n<strong>* Creo l'ambiente dove vive jinja2\r\n* Qui verranno gestite tutte le configurazioni<\/strong>\r\nenv = Environment(\r\n                loader=file_loader, <strong>* Carico il percorso dei file del template<\/strong>\r\n                autoescape=select_autoescape() <strong>* Utilizzo l'autoescape<\/strong>\r\n)\r\n\r\n<strong>* Recupero il template tramite il metogo get_template()<\/strong>\r\ntemplate = env.get_template(\"index.html\")\r\n\r\n<strong>* Con il metodo render() eseguo il rendering del template<\/strong>\r\nprint(template.render())\r\n\r\n<strong>* Extra: tramite il package pywebview faccio un rendering dell'HTML che ho usato\r\n* nell'esempio<\/strong>\r\ntitoloFinestra = \"La mia finestra\"\r\nwebview.create_window(titoloFinestra, html = template.render())\r\nwebview.start()<\/code><\/pre>\r\n<p>Dal listato precedente vediamo che dalla libreria di Jinja2 sono stati importati alcuni moduli tra cui Enviroment che una volta istanziato servir\u00e0 a configurare l\u2019ambiente dove vivr\u00e0 il template. Altri moduli che abbiamo importato sono select_autoescape e FileSystemLoader. <strong>select_autoescape<\/strong> serve per abilitare l\u2019escape automatico di Jinja, a volte quando si generano documenti HTML da modelli c\u2019\u00e8 il rischio che la renderizzazione di variabili vadano ad influire sull\u2019HTML risultante. <strong>FileSystemLoader<\/strong> serve per indicare la cartella dove si trovano i template. Da notare che nel progetto per poter visualizzare il risultato in versione grafica ci siamo aiutati con la libreria pywebview che crea applicazioni desktop utilizzando codice html. Per poterla installare digitare il seguente comando.<\/p>\r\n<pre class=\"wp-block-code\"><code>pip install pywebview<\/code><\/pre>\r\n<p>Vediamo ora il codice del template, inseriamo all\u2019interno di index.html il seguente listato.<\/p>\r\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\" dir=\"ltr\"&gt;\r\n  &lt;head&gt;\r\n    &lt;meta charset=\"utf-8\"&gt;\r\n    &lt;title&gt;&lt;\/title&gt;\r\n  &lt;\/head&gt;\r\n  &lt;body&gt;\r\n    &lt;p&gt;\r\n      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\n      tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\n      quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\r\n      Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore\r\n      eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,\r\n      sunt in culpa qui officia deserunt mollit anim id est laborum.\r\n    &lt;\/p&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt; <\/code><\/pre>\r\n<p>Lanciamo il programma con il comando python main.py e vediamo il risultato finale.<\/p>\r\n<p style=\"text-align: center;\"><a href=\"https:\/\/i.ibb.co\/fFYhnm2\/MyWindow.png\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/ywAAAAAAQABAAACAUwAOw==\" fifu-lazy=\"1\" fifu-data-sizes=\"auto\" fifu-data-srcset=\"https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=75&resize=75&ssl=1 75w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=100&resize=100&ssl=1 100w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=150&resize=150&ssl=1 150w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=240&resize=240&ssl=1 240w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=320&resize=320&ssl=1 320w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=500&resize=500&ssl=1 500w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=640&resize=640&ssl=1 640w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=800&resize=800&ssl=1 800w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=1024&resize=1024&ssl=1 1024w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=1280&resize=1280&ssl=1 1280w, https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1&w=1600&resize=1600&ssl=1 1600w\" class=\"wp-image-7012 size-full aligncenter\" fifu-data-src=\"https:\/\/i3.wp.com\/i.ibb.co\/fFYhnm2\/MyWindow.png?ssl=1\" alt=\"La mia finestra\" width=\"100%\" height=\"289\" \/><\/a> <strong>Fig. 3<\/strong><\/p>\r\n<h3><strong>Esempio template dinamico<\/strong><\/h3>\r\n<p>Nel seguente esempio inseriremo nel template dei dati dinamici. modificare il file main.py come segue.<\/p>\r\n<pre class=\"wp-block-code\"><code>from jinja2 import Environment, PackageLoader, select_autoescape, FileSystemLoader\r\nimport webview\r\n\r\nenv = Environment(\r\n                loader = FileSystemLoader('templates'),\r\n                autoescape=select_autoescape()\r\n)\r\n\r\n<strong>* Recupero il template tramite il metodo get_template()<\/strong>\r\ntemplate = env.get_template(\"esempio_passaggio_di_variabili.html\")\r\n\r\n<strong>* Con il metodo render() eseguo il rendering del template\r\n* Tra gli argomenti del metodo render posso passare dei dati da visualizzare nel 'templates'\r\n* I dati possono essere di qualunque tipo variabili, liste, dizionari, oggetti, json<\/strong>\r\nvista = template.render(\r\n                    titolo = \"Esempio passaggio di variabili\",\r\n                    sottoTitolo = \"Per renderizzare le variabili bisogna inserire il segnaposto tra {{}}\")\r\n\r\nprint(vista)\r\n\r\n\r\n<strong>* Extra: tramite il package pywebview faccio un rendering dell'HTML che ho usato\r\n* nell'esempio<\/strong>\r\ntitoloFinestra = \"La mia finestra\"\r\nwebview.create_window(titoloFinestra, html = vista)\r\nwebview.start()\r\n<\/code><\/pre>\r\n<p>Adesso modifichiamo il file index.html come segue.<\/p>\r\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\r\n&lt;html lang=\"en\" dir=\"ltr\"&gt;\r\n  &lt;head&gt;\r\n    &lt;meta charset=\"utf-8\"&gt;\r\n    &lt;title&gt;&lt;\/title&gt;\r\n  &lt;\/head&gt;\r\n  &lt;body&gt;\r\n    &lt;h1&gt;{{titolo}}&lt;\/h1&gt;\r\n    &lt;h3&gt;{{sottoTitolo}}&lt;\/h3&gt;\r\n    &lt;p&gt;\r\n      Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\n      tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\n      quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\r\n      Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.\r\n      Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\r\n    &lt;\/p&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;<\/code><\/pre>\r\n<p>Vediamo il risultato finale.<\/p>\r\n<p style=\"text-align: center;\"><a href=\"https:\/\/i.ibb.co\/r4CmDr9\/My-Window2.png\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/ywAAAAAAQABAAACAUwAOw==\" fifu-lazy=\"1\" fifu-data-sizes=\"auto\" fifu-data-srcset=\"https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=75&resize=75&ssl=1 75w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=100&resize=100&ssl=1 100w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=150&resize=150&ssl=1 150w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=240&resize=240&ssl=1 240w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=320&resize=320&ssl=1 320w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=500&resize=500&ssl=1 500w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=640&resize=640&ssl=1 640w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=800&resize=800&ssl=1 800w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=1024&resize=1024&ssl=1 1024w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=1280&resize=1280&ssl=1 1280w, https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1&w=1600&resize=1600&ssl=1 1600w\" class=\"wp-image-7014 size-full aligncenter\" fifu-data-src=\"https:\/\/i1.wp.com\/i.ibb.co\/r4CmDr9\/My-Window2.png?ssl=1\" alt=\"La mia finestra 2\" width=\"100%\" height=\"288\" \/><\/a> <strong>Fig. 4<\/strong><\/p>\r\n<p>In questo tutorial abbiamo visto cos\u2019\u00e8 la libreria Jinja2, abbiamo visto anche come si usa tramite piccoli esempi, nei prossimi tutorial arricchiremo il nostro bagaglio vedendo altre funzionalit\u00e0 che rendono questo motore di template un valido strumento di sviluppo. \u00a0<\/p>\r\n<p>&nbsp;<\/p>\r\n<p>SviluppoMania<\/p>\r\n<p>Stay Tuned<\/p>","protected":false},"excerpt":{"rendered":"<p>In quest\u2019articolo parleremo di Jinja il motore di template usato nell\u2019ecosistema Python. Creato nel 2008 da Armin Ronacher, lo stesso&#8230;<\/p>\n","protected":false},"author":174,"featured_media":7158,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg","fifu_image_alt":"JINJA2","_vp_format_video_url":"","_vp_image_focal_point":[],"footnotes":""},"categories":[298],"tags":[608,606,603,604,605,607],"class_list":["post-7004","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming_languages","tag-creare-templates","tag-flask-jinja","tag-jinja","tag-jinja2","tag-python-jinja2","tag-viste-con-jinja"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>JINJA2 Tutorial: parte 1<\/title>\n<meta name=\"description\" content=\"In quest\u2019articolo parleremo di Jinja il motore di template usato nell\u2019ecosistema Python...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JINJA2 Tutorial: parte 1\" \/>\n<meta property=\"og:description\" content=\"In quest\u2019articolo parleremo di Jinja il motore di template usato nell\u2019ecosistema Python...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/\" \/>\n<meta property=\"og:site_name\" content=\"SviluppoMania | Blog professionale dedicato alla Tecnologia!\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SviluppoManiaCom\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-24T20:55:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-01T20:16:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg\" \/><meta property=\"og:image\" content=\"https:\/\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"539\" \/>\n\t<meta property=\"og:image:height\" content=\"249\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"MARCO.VERGNANI\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@SviluppoMania\" \/>\n<meta name=\"twitter:site\" content=\"@SviluppoMania\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"MARCO.VERGNANI\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/\"},\"author\":{\"name\":\"MARCO.VERGNANI\",\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/#\\\/schema\\\/person\\\/3df736103fd3a1e84c63a2807f433c61\"},\"headline\":\"JINJA2 Tutorial: parte 1\",\"datePublished\":\"2022-11-24T20:55:48+00:00\",\"dateModified\":\"2025-12-01T20:16:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/\"},\"wordCount\":1862,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i2.wp.com\\\/i.ibb.co\\\/ngGVSFk\\\/0g-QQjuzt6-IM5-TXy-V.jpg?w=539&resize=539,249&ssl=1\",\"keywords\":[\"creare templates\",\"flask jinja\",\"jinja\",\"jinja2\",\"python jinja2\",\"viste con jinja\"],\"articleSection\":[\"LINGUAGGI &amp; PROGRAMMAZIONE\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/\",\"url\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/\",\"name\":\"JINJA2 Tutorial: parte 1\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i2.wp.com\\\/i.ibb.co\\\/ngGVSFk\\\/0g-QQjuzt6-IM5-TXy-V.jpg?w=539&resize=539,249&ssl=1\",\"datePublished\":\"2022-11-24T20:55:48+00:00\",\"dateModified\":\"2025-12-01T20:16:45+00:00\",\"description\":\"In quest\u2019articolo parleremo di Jinja il motore di template usato nell\u2019ecosistema Python...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i2.wp.com\\\/i.ibb.co\\\/ngGVSFk\\\/0g-QQjuzt6-IM5-TXy-V.jpg?w=539&resize=539,249&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i2.wp.com\\\/i.ibb.co\\\/ngGVSFk\\\/0g-QQjuzt6-IM5-TXy-V.jpg?w=539&resize=539,249&ssl=1\",\"width\":\"539\",\"height\":\"249\",\"caption\":\"JINJA2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/jinja2-tutorial-parte-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JINJA2 Tutorial: parte 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/\",\"name\":\"SviluppoMania | Blog professionale dedicato alla Tecnologia!\",\"description\":\"SviluppoMania | Blog professionale dedicato alla Tecnologia! Tools - Recensioni e tanto altro\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/#organization\",\"name\":\"SviluppoMania.com\",\"url\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.sviluppomania.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/SviluppoMania-logo2-_1_.webp\",\"contentUrl\":\"https:\\\/\\\/www.sviluppomania.com\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/SviluppoMania-logo2-_1_.webp\",\"width\":474,\"height\":408,\"caption\":\"SviluppoMania.com\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/SviluppoManiaCom\",\"https:\\\/\\\/x.com\\\/SviluppoMania\",\"https:\\\/\\\/www.instagram.com\\\/sviluppomania\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC5CuM88LjzBeC23s2DPdveA\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/#\\\/schema\\\/person\\\/3df736103fd3a1e84c63a2807f433c61\",\"name\":\"MARCO.VERGNANI\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/lh3.googleusercontent.com\\\/a\\\/ACg8ocIrc635RIrznZifq60wpv-NGquftAXU0DTmwwGSdlV4FbvhpkIn=s96-c?sz=50\",\"url\":\"https:\\\/\\\/lh3.googleusercontent.com\\\/a\\\/ACg8ocIrc635RIrznZifq60wpv-NGquftAXU0DTmwwGSdlV4FbvhpkIn=s96-c?sz=50\",\"contentUrl\":\"https:\\\/\\\/lh3.googleusercontent.com\\\/a\\\/ACg8ocIrc635RIrznZifq60wpv-NGquftAXU0DTmwwGSdlV4FbvhpkIn=s96-c?sz=50\",\"caption\":\"MARCO.VERGNANI\"},\"description\":\"Nella mia vita a 12 anni e' entrato a far parte un Intel 80286 con 4MB di RAM, un Hard disk da 20 MB e una primissima scheda VGA appena uscita e da allora mi si e' aperto un mondo pieno di bit. Appassionato di programmazione fin da piccolo, mi diverto a costruire piccoli robottini. Curioso delle molteplici applicazioni che le macchine automatiche possono compiere, e adoro vedere volare quegli strani oggetti chiamati droni.\",\"url\":\"https:\\\/\\\/www.sviluppomania.com\\\/it\\\/author\\\/marco-vergnani\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JINJA2 Tutorial: parte 1","description":"In quest\u2019articolo parleremo di Jinja il motore di template usato nell\u2019ecosistema Python...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/","og_locale":"it_IT","og_type":"article","og_title":"JINJA2 Tutorial: parte 1","og_description":"In quest\u2019articolo parleremo di Jinja il motore di template usato nell\u2019ecosistema Python...","og_url":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/","og_site_name":"SviluppoMania | Blog professionale dedicato alla Tecnologia!","article_publisher":"https:\/\/www.facebook.com\/SviluppoManiaCom","article_published_time":"2022-11-24T20:55:48+00:00","article_modified_time":"2025-12-01T20:16:45+00:00","og_image":[{"url":"https:\/\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg","type":"","width":"","height":""},{"width":539,"height":249,"url":"https:\/\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg","type":"image\/jpeg"}],"author":"MARCO.VERGNANI","twitter_card":"summary_large_image","twitter_image":"https:\/\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg","twitter_creator":"@SviluppoMania","twitter_site":"@SviluppoMania","twitter_misc":{"Scritto da":"MARCO.VERGNANI","Tempo di lettura stimato":"15 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/#article","isPartOf":{"@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/"},"author":{"name":"MARCO.VERGNANI","@id":"https:\/\/www.sviluppomania.com\/it\/#\/schema\/person\/3df736103fd3a1e84c63a2807f433c61"},"headline":"JINJA2 Tutorial: parte 1","datePublished":"2022-11-24T20:55:48+00:00","dateModified":"2025-12-01T20:16:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/"},"wordCount":1862,"commentCount":0,"publisher":{"@id":"https:\/\/www.sviluppomania.com\/it\/#organization"},"image":{"@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/#primaryimage"},"thumbnailUrl":"https:\/\/i2.wp.com\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg?w=539&resize=539,249&ssl=1","keywords":["creare templates","flask jinja","jinja","jinja2","python jinja2","viste con jinja"],"articleSection":["LINGUAGGI &amp; PROGRAMMAZIONE"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/","url":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/","name":"JINJA2 Tutorial: parte 1","isPartOf":{"@id":"https:\/\/www.sviluppomania.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/#primaryimage"},"image":{"@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/#primaryimage"},"thumbnailUrl":"https:\/\/i2.wp.com\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg?w=539&resize=539,249&ssl=1","datePublished":"2022-11-24T20:55:48+00:00","dateModified":"2025-12-01T20:16:45+00:00","description":"In quest\u2019articolo parleremo di Jinja il motore di template usato nell\u2019ecosistema Python...","breadcrumb":{"@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/"]]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/#primaryimage","url":"https:\/\/i2.wp.com\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg?w=539&resize=539,249&ssl=1","contentUrl":"https:\/\/i2.wp.com\/i.ibb.co\/ngGVSFk\/0g-QQjuzt6-IM5-TXy-V.jpg?w=539&resize=539,249&ssl=1","width":"539","height":"249","caption":"JINJA2"},{"@type":"BreadcrumbList","@id":"https:\/\/www.sviluppomania.com\/it\/jinja2-tutorial-parte-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sviluppomania.com\/it\/"},{"@type":"ListItem","position":2,"name":"JINJA2 Tutorial: parte 1"}]},{"@type":"WebSite","@id":"https:\/\/www.sviluppomania.com\/it\/#website","url":"https:\/\/www.sviluppomania.com\/it\/","name":"SviluppoMania | Blog professionale dedicato alla Tecnologia!","description":"SviluppoMania | Blog professionale dedicato alla Tecnologia! Tools - Recensioni e tanto altro","publisher":{"@id":"https:\/\/www.sviluppomania.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sviluppomania.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.sviluppomania.com\/it\/#organization","name":"SviluppoMania.com","url":"https:\/\/www.sviluppomania.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.sviluppomania.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/www.sviluppomania.com\/wp-content\/uploads\/2020\/12\/SviluppoMania-logo2-_1_.webp","contentUrl":"https:\/\/www.sviluppomania.com\/wp-content\/uploads\/2020\/12\/SviluppoMania-logo2-_1_.webp","width":474,"height":408,"caption":"SviluppoMania.com"},"image":{"@id":"https:\/\/www.sviluppomania.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SviluppoManiaCom","https:\/\/x.com\/SviluppoMania","https:\/\/www.instagram.com\/sviluppomania\/","https:\/\/www.youtube.com\/channel\/UC5CuM88LjzBeC23s2DPdveA"]},{"@type":"Person","@id":"https:\/\/www.sviluppomania.com\/it\/#\/schema\/person\/3df736103fd3a1e84c63a2807f433c61","name":"MARCO.VERGNANI","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/lh3.googleusercontent.com\/a\/ACg8ocIrc635RIrznZifq60wpv-NGquftAXU0DTmwwGSdlV4FbvhpkIn=s96-c?sz=50","url":"https:\/\/lh3.googleusercontent.com\/a\/ACg8ocIrc635RIrznZifq60wpv-NGquftAXU0DTmwwGSdlV4FbvhpkIn=s96-c?sz=50","contentUrl":"https:\/\/lh3.googleusercontent.com\/a\/ACg8ocIrc635RIrznZifq60wpv-NGquftAXU0DTmwwGSdlV4FbvhpkIn=s96-c?sz=50","caption":"MARCO.VERGNANI"},"description":"Nella mia vita a 12 anni e' entrato a far parte un Intel 80286 con 4MB di RAM, un Hard disk da 20 MB e una primissima scheda VGA appena uscita e da allora mi si e' aperto un mondo pieno di bit. Appassionato di programmazione fin da piccolo, mi diverto a costruire piccoli robottini. Curioso delle molteplici applicazioni che le macchine automatiche possono compiere, e adoro vedere volare quegli strani oggetti chiamati droni.","url":"https:\/\/www.sviluppomania.com\/it\/author\/marco-vergnani\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/posts\/7004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/users\/174"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/comments?post=7004"}],"version-history":[{"count":1,"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/posts\/7004\/revisions"}],"predecessor-version":[{"id":7447,"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/posts\/7004\/revisions\/7447"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/media\/7158"}],"wp:attachment":[{"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/media?parent=7004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/categories?post=7004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sviluppomania.com\/it\/wp-json\/wp\/v2\/tags?post=7004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}