{"id":2555,"date":"2010-06-17T13:53:06","date_gmt":"2010-06-17T11:53:06","guid":{"rendered":"https:\/\/www.artera.net\/it\/blog\/?p=2555"},"modified":"2023-03-06T16:33:14","modified_gmt":"2023-03-06T16:33:14","slug":"applicazioni-web-in-python-le-viste","status":"publish","type":"post","link":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/","title":{"rendered":"Applicazioni Web in Python: Le Viste"},"content":{"rendered":"<p><img decoding=\"async\" style=\"margin-top: -10px;float:left\" title=\"Applicazioni web in Puthon\" src=\"https:\/\/www.artera.net\/wp-content\/uploads\/2010\/03\/python_logo_without_textsvg.png\" alt=\"Applicazioni web in Python\" width=\"143\" height=\"143\"> Oggi proseguiamo il tutorial di sviluppo della nostra applicazione Pylons analizzando un&#8217;altro componente del modello di sviluppo MVC (vedi spiegazione in <a href=\"https:\/\/www.artera.net\/it\/blog\/programmazione\/applicazioni-web-in-python-i-controller\">Applicazioni Web in Python: I Controller<\/a>): le <strong>Viste<\/strong>. Analizzeremo in particolare uno dei <strong>template engine<\/strong> per Pylons chiamato <strong>Mako<\/strong>.<\/p>\n<h3>Il template engine<\/h3>\n<p>Le viste hanno il compito di prendere i dati elaborati dai controller e fornirli all&#8217;utente finale nel formato scelto (in genere una pagina html).<br \/>\nLa creazione del formato finale viene semplificata dall&#8217;uso di <strong>template engine<\/strong> (letteralmente &#8220;motore di template&#8221;) che permettono di usare alcuni costrutti tipici dei linguaggi di programmazione all&#8217;interno del testo da formattare, in maniera simile a quanto avviene nel PHP, dove \u00e8 possibile aprire in un qualsiasi punto della pagina html un tag <strong><\/strong> e rendere dinamica la creazione dell&#8217;output.<\/p>\n<p><strong>Pylons<\/strong> rispetto ad altri <strong>framework python<\/strong> ha il vantaggio di essere molto flessibile nella scelta dei componenti da utilizzare e infatti abbiamo una vasta scelta di template engine per modellare le viste. La nostra scelta \u00e8 stata di utilizzare i template Mako ma altre scelte possibili sono (per citarne solo alcune): Jinja2, <a href=\"http:\/\/www.cheetahtemplate.org\/\">Cheetah<\/a>, Genshi, <a href=\"http:\/\/pythonpaste.org\/tempita\">Tempita<\/a>.<\/p>\n<h3>Mako<\/h3>\n<p><strong>Mako<\/strong> \u00e8 un <strong>template engine<\/strong> che prende spunto dalla maggior parte dei template engine elencati precedentemente ed \u00e8 concettualmente (citando il sito ufficiale) un interprete python &#8220;incluso&#8221; all&#8217;interno delle pagine.<\/p>\n<p>Mako precompila i suoi template in codice python, <strong>ottimizzando cos\u00ec le performance di interpretazione<\/strong> e la sua sintassi si dimostra molto flessibile, poich\u00e9 permette di includere codice in linguaggio python all&#8217;interno dei suoi template mentre altri motori concorrenti offrono una sintassi completamente originale e che a volte non si dimostra sufficientemente flessibile quanto un vero linguaggio di programmazione.<\/p>\n<p>Prendiamo l&#8217;esempio fornito dal sito ufficiale:<\/p>\n<p>[code language=&#8221;python&#8221;]<\/p>\n<p>% for row in rows:<br \/>\n${makerow(row)}<br \/>\n% endfor<\/p>\n<table><\/table>\n<p>% for name in row:<\/p>\n<p>${name}\\<br \/>\n% endfor<br \/>\n[\/code]<\/p>\n<p>Il codice riportato presente gi\u00e0 molte delle caratteristiche che rendono Mako particolarmente interessante: ereditariet\u00e0, embedding di codice python, blocchi.<\/p>\n<h3>Sintassi<\/h3>\n<p>Mako supporta 4 diversi tipi di inclusione di codice.<\/p>\n<h4>Codice python embedded<\/h4>\n<p>L&#8217;equivalente del linguaggio PHP, che ci permette di inserire un qualsiasi tipo di codice python nel template, consiste nell&#8217;uso dei tag speciali <strong>&lt;%<\/strong> che equivale a &lt;?php e <strong>%&gt;<\/strong> che equivale a ?&gt; come si pu\u00f2 vedere nelle righe 2-4.<\/p>\n<h4>Cicli e controlli condizionali<\/h4>\n<p>Python \u00e8 per\u00f2 un linguaggio privo di parentesi e quindi per utilizzare cicli e costrutti condizionali inframezzati a codice html, Mako offre la possibilit\u00e0 di definire, anche qui similarmente a PHP, l&#8217;inizio e la fine di tali blocchi di codice.<br \/>\nIniziando una riga con <strong>%<\/strong> si pu\u00f2 aprire\/chiudere uno di questi costrutti, terminandoli con endfor, endif etc&#8230; (Vedi righe 6-8).<\/p>\n<h4>Stampa di variabili\/funzioni<\/h4>\n<p>L&#8217;operazione pi\u00f9 semplice \u00e8 la stampa di una variabile nel template o la chiamata di una funzione con la sintassi <strong>${variabile}<\/strong> e <strong>${funzione()}<\/strong>, ma sono consentite anche elaborazioni di piccole espressioni, come ad esempio:<\/p>\n<p>[code gutter=&#8221;false&#8221; language=&#8221;python&#8221;]<\/p>\n<h1>${title if title != &#8221; else &#8216;Titolo predefinito&#8217;}<\/h1>\n<p>[\/code]<\/p>\n<p>La cosa interessante \u00e8 che l&#8217;output \u00e8 automaticamente (per impostazione di pylons) ripulito per l&#8217;inserimento all&#8217;interno di codice html, senza dover fare escaping manualmente, come invece avviene in PHP con la funzione htmlentities, ma questo non avviene nel caso di chiamate a funzioni Mako.<\/p>\n<h4>Blocchi e costrutti speciali<\/h4>\n<p>Mako inoltre supporta alcuni tag speciali, che come in XML possono essere self-closed e la loro sintassi \u00e8:<\/p>\n<p>[code gutter=&#8221;false&#8221; language=&#8221;python&#8221;]<\/p>\n<p>[&#8230;]<\/p>\n<p>[\/code]<\/p>\n<p>Nell&#8217;esempio vengono usati i tag <strong>inherit<\/strong> (linea 1) e <strong>def<\/strong> (linee 11-17). Per l&#8217;elenco completo e la loro funzione rimando alla documentazione ufficiale.<\/p>\n<h3>Ereditariet\u00e0<\/h3>\n<p>Una delle caratteristiche pi\u00f9 interessanti di Mako \u00e8<strong> l&#8217;ereditariet\u00e0 dei template<\/strong>. Nell&#8217;esempio vediamo alla riga 1 che il template eredita dal template base.html che non ci viene illustrato dal sito ufficiale, ma che potrebbe assomigliare a qualcosa di questo tipo:<\/p>\n<p>[code language=&#8221;python&#8221;]<\/p>\n<p><title>${self.title()}<\/title><\/p>\n<p>${self.body()}<\/p>\n<p>Prova<\/p>\n<p>[\/code]<\/p>\n<p>In questo template <strong>${self.title()}<\/strong> viene utilizzato per stampare il contenuto del blocco di nome title(), che pu\u00f2 per\u00f2 essere ridefinito nei template figli se lo volessero, mentre <strong>${self.body()}<\/strong> \u00e8 un valore speciale che corrisponde all&#8217;intero contenuto del blocco figlio e che ci permette cos\u00ec di separare la costruzione della pagina html in template separati per strati.<\/p>\n<h3>Richiamare un template dai controller<\/h3>\n<p>Abbiamo visto la sintassi dei template, ma come li utilizziamo dall&#8217;interno dei nostri controller pylons?<br \/>\nL&#8217;uso \u00e8 semplice e pylons ci semplifica il lavoro preimpostando tutta una serie di parametri di Mako e questo per noi significa che ci basta chiamare la funzione <em>render(nometemplate)<\/em> per ottenere l&#8217;output che ci serve.<\/p>\n<p>Riprendiamo il controller dall&#8217;<a title=\"I controller Pylons\" href=\"\/programmazione\/applicazioni-web-in-python-i-controller\">articolo precedente<\/a>:<\/p>\n<p>[code language=&#8221;python&#8221;]<br \/>\nclass HelloController(BaseController):<br \/>\ndef world(self):<br \/>\nreturn render(&#8216;\/template.html&#8217;)<br \/>\n[\/code]<\/p>\n<p>Semplice no? E&#8217; importante ricordarsi che <em>render<\/em> vuole sempre percorsi assoluti rispetto alla cartella <strong>[applicazione]\/templates<\/strong> per i template, quindi specificando &#8220;\/template.html&#8221;, Mako ci fornir\u00e0 l&#8217;output del file <strong>[applicazione]\/templates\/template.html<\/strong><\/p>\n<p>Come fare, infine, a passare dati dal controller al template? Per questo pylons ci fornisce una variabile di contesto di nome <strong>c<\/strong> alla quale possiamo associare i dati che servono al template. <strong>c<\/strong> ha inoltre la propriet\u00e0 speciale di restituire una stringa vuota se si prova a richiedere un valore non definito, evitando facili eccezioni nei nostri template.<\/p>\n<p>Esempio hello.py:<\/p>\n<p>[code language=&#8221;python&#8221;]<br \/>\nclass HelloController(BaseController):<br \/>\ndef world(self):<br \/>\nc.name = &#8216;World&#8217;<br \/>\nreturn render(&#8216;\/template.html&#8217;)<br \/>\n[\/code]<\/p>\n<p>template.html:<\/p>\n<p>[code language=&#8221;python&#8221;]<\/p>\n<h1>Hello ${c.name}!<\/h1>\n<p>[\/code]<\/p>\n<h3>Conclusione<\/h3>\n<p>Questo articolo ha fornito una buona panoramica per iniziare a utilizzare i template Mako, ma ci sarebbe ancora molto, troppo per questa sede, da dire. La <a title=\"Mako template engine: la documentazione ufficiale\" href=\"http:\/\/www.makotemplates.org\/docs\/\" target=\"_blank\" rel=\"noopener noreferrer\">documentazione ufficiale<\/a> \u00e8 comunque molto esauriente e completa e fornisce anche esempi per la maggior parte delle funzionalit\u00e0.<\/p>\n<p>Nel prossimo articolo tratteremo i <strong>modelli Elixir<\/strong> per interagire col database.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" style=\"margin-top: -5px;float:left\" title=\"Applicazioni web in Puthon\" src=\"https:\/\/www.artera.net\/wp-content\/uploads\/2010\/03\/python_logo_without_textsvg.png\" alt=\"Applicazioni web in Python\" width=\"143\" height=\"143\" \/> Oggi proseguiamo il tutorial di sviluppo della nostra applicazione Pylons analizzando un&#8217;altro componente del modello di sviluppo MVC (vedi spiegazione in <a href=\"https:\/\/www.artera.net\/it\/blog\/programmazione\/applicazioni-web-in-python-i-controller\">Applicazioni Web in Python: I Controller<\/a>): le <strong>Viste<\/strong>. Analizzeremo in particolare uno dei <strong>template engine<\/strong> per Pylons chiamato <strong>Mako<\/strong>.<\/p>\n","protected":false},"author":14,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","footnotes":""},"categories":[108],"tags":[76,77],"class_list":["post-2555","post","type-post","status-publish","format-standard","hentry","category-sviluppo","tag-pylons","tag-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u2022 Applicazioni Web in Python: Le Viste - Artera<\/title>\n<meta name=\"description\" content=\"Leggi dal blog: Applicazioni Web in Python: Le Viste. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.\" \/>\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.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u2022 Applicazioni Web in Python: Le Viste - Artera\" \/>\n<meta property=\"og:description\" content=\"Leggi dal blog: Applicazioni Web in Python: Le Viste. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/\" \/>\n<meta property=\"og:site_name\" content=\"Artera\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/artera.net\/\" \/>\n<meta property=\"article:published_time\" content=\"2010-06-17T11:53:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-06T16:33:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.artera.net\/wp-content\/uploads\/2010\/03\/python_logo_without_textsvg.png\" \/>\n<meta name=\"author\" content=\"Massimiliano Torromeo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Massimiliano Torromeo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/\"},\"author\":{\"name\":\"Massimiliano Torromeo\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#\\\/schema\\\/person\\\/f0793d88769c8429e457f364de9ae071\"},\"headline\":\"Applicazioni Web in Python: Le Viste\",\"datePublished\":\"2010-06-17T11:53:06+00:00\",\"dateModified\":\"2023-03-06T16:33:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/\"},\"wordCount\":949,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2010\\\/03\\\/python_logo_without_textsvg.png\",\"keywords\":[\"pylons\",\"python\"],\"articleSection\":[\"Sviluppo\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/\",\"url\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/\",\"name\":\"\u2022 Applicazioni Web in Python: Le Viste - Artera\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2010\\\/03\\\/python_logo_without_textsvg.png\",\"datePublished\":\"2010-06-17T11:53:06+00:00\",\"dateModified\":\"2023-03-06T16:33:14+00:00\",\"description\":\"Leggi dal blog: Applicazioni Web in Python: Le Viste. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2010\\\/03\\\/python_logo_without_textsvg.png\",\"contentUrl\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2010\\\/03\\\/python_logo_without_textsvg.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/sviluppo\\\/applicazioni-web-in-python-le-viste\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.artera.net\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Applicazioni Web in Python: Le Viste\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/www.artera.net\\\/it\\\/\",\"name\":\"Artera\",\"description\":\"Swiss Premium Hosting\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.artera.net\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#organization\",\"name\":\"Artera\",\"url\":\"https:\\\/\\\/www.artera.net\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/artera-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.artera.net\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/artera-logo.png\",\"width\":300,\"height\":77,\"caption\":\"Artera\"},\"image\":{\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/artera.net\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/artera\\\/\",\"https:\\\/\\\/www.instagram.com\\\/artera_swiss\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.artera.net\\\/it\\\/#\\\/schema\\\/person\\\/f0793d88769c8429e457f364de9ae071\",\"name\":\"Massimiliano Torromeo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c8c79e6f7da11d2b45e20c77201173517aecba437175f94ec02f729095cb40c2?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c8c79e6f7da11d2b45e20c77201173517aecba437175f94ec02f729095cb40c2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c8c79e6f7da11d2b45e20c77201173517aecba437175f94ec02f729095cb40c2?s=96&d=mm&r=g\",\"caption\":\"Massimiliano Torromeo\"},\"description\":\"Passionate about computer science since I was a child, I started programming as a self-taught person from about the age of twelve. Over time, I have become a staunch supporter of free software and the open source movement. This fondness for free software soon led me to approach the Linux world and in 2011 I became a member of the Arch Linux Trusted Users team. In Artera since 2007 I deal with all aspects related to our infrastructure, internal development of software and enterprise solutions, research and development and internal training of our programming and support departments.\",\"url\":\"https:\\\/\\\/www.artera.net\\\/it\\\/author\\\/massimiliano-torromeo\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u2022 Applicazioni Web in Python: Le Viste - Artera","description":"Leggi dal blog: Applicazioni Web in Python: Le Viste. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.","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.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/","og_locale":"it_IT","og_type":"article","og_title":"\u2022 Applicazioni Web in Python: Le Viste - Artera","og_description":"Leggi dal blog: Applicazioni Web in Python: Le Viste. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.","og_url":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/","og_site_name":"Artera","article_publisher":"https:\/\/www.facebook.com\/artera.net\/","article_published_time":"2010-06-17T11:53:06+00:00","article_modified_time":"2023-03-06T16:33:14+00:00","og_image":[{"url":"https:\/\/www.artera.net\/wp-content\/uploads\/2010\/03\/python_logo_without_textsvg.png","type":"","width":"","height":""}],"author":"Massimiliano Torromeo","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"Massimiliano Torromeo","Tempo di lettura stimato":"5 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/#article","isPartOf":{"@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/"},"author":{"name":"Massimiliano Torromeo","@id":"https:\/\/www.artera.net\/it\/#\/schema\/person\/f0793d88769c8429e457f364de9ae071"},"headline":"Applicazioni Web in Python: Le Viste","datePublished":"2010-06-17T11:53:06+00:00","dateModified":"2023-03-06T16:33:14+00:00","mainEntityOfPage":{"@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/"},"wordCount":949,"commentCount":2,"publisher":{"@id":"https:\/\/www.artera.net\/it\/#organization"},"image":{"@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/#primaryimage"},"thumbnailUrl":"https:\/\/www.artera.net\/wp-content\/uploads\/2010\/03\/python_logo_without_textsvg.png","keywords":["pylons","python"],"articleSection":["Sviluppo"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/","url":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/","name":"\u2022 Applicazioni Web in Python: Le Viste - Artera","isPartOf":{"@id":"https:\/\/www.artera.net\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/#primaryimage"},"image":{"@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/#primaryimage"},"thumbnailUrl":"https:\/\/www.artera.net\/wp-content\/uploads\/2010\/03\/python_logo_without_textsvg.png","datePublished":"2010-06-17T11:53:06+00:00","dateModified":"2023-03-06T16:33:14+00:00","description":"Leggi dal blog: Applicazioni Web in Python: Le Viste. Contattaci per una partnership! Artera Swiss Premium Hosting news, articoli e notizie interessanti dal mondo digitale.","breadcrumb":{"@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/#primaryimage","url":"https:\/\/www.artera.net\/wp-content\/uploads\/2010\/03\/python_logo_without_textsvg.png","contentUrl":"https:\/\/www.artera.net\/wp-content\/uploads\/2010\/03\/python_logo_without_textsvg.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.artera.net\/it\/sviluppo\/applicazioni-web-in-python-le-viste\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.artera.net\/it\/"},{"@type":"ListItem","position":2,"name":"Applicazioni Web in Python: Le Viste"}]},{"@type":"WebSite","@id":"https:\/\/www.artera.net\/it\/#website","url":"https:\/\/www.artera.net\/it\/","name":"Artera","description":"Swiss Premium Hosting","publisher":{"@id":"https:\/\/www.artera.net\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.artera.net\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.artera.net\/it\/#organization","name":"Artera","url":"https:\/\/www.artera.net\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.artera.net\/it\/#\/schema\/logo\/image\/","url":"https:\/\/www.artera.net\/wp-content\/uploads\/2019\/09\/artera-logo.png","contentUrl":"https:\/\/www.artera.net\/wp-content\/uploads\/2019\/09\/artera-logo.png","width":300,"height":77,"caption":"Artera"},"image":{"@id":"https:\/\/www.artera.net\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/artera.net\/","https:\/\/www.linkedin.com\/company\/artera\/","https:\/\/www.instagram.com\/artera_swiss\/"]},{"@type":"Person","@id":"https:\/\/www.artera.net\/it\/#\/schema\/person\/f0793d88769c8429e457f364de9ae071","name":"Massimiliano Torromeo","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/c8c79e6f7da11d2b45e20c77201173517aecba437175f94ec02f729095cb40c2?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c8c79e6f7da11d2b45e20c77201173517aecba437175f94ec02f729095cb40c2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c8c79e6f7da11d2b45e20c77201173517aecba437175f94ec02f729095cb40c2?s=96&d=mm&r=g","caption":"Massimiliano Torromeo"},"description":"Passionate about computer science since I was a child, I started programming as a self-taught person from about the age of twelve. Over time, I have become a staunch supporter of free software and the open source movement. This fondness for free software soon led me to approach the Linux world and in 2011 I became a member of the Arch Linux Trusted Users team. In Artera since 2007 I deal with all aspects related to our infrastructure, internal development of software and enterprise solutions, research and development and internal training of our programming and support departments.","url":"https:\/\/www.artera.net\/it\/author\/massimiliano-torromeo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/posts\/2555","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/comments?post=2555"}],"version-history":[{"count":5,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/posts\/2555\/revisions"}],"predecessor-version":[{"id":255377,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/posts\/2555\/revisions\/255377"}],"wp:attachment":[{"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/media?parent=2555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/categories?post=2555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.artera.net\/it\/wp-json\/wp\/v2\/tags?post=2555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}