{"id":976,"date":"2022-08-06T15:38:06","date_gmt":"2022-08-06T13:38:06","guid":{"rendered":"https:\/\/alessandromasciadri.com\/?p=976"},"modified":"2022-08-06T16:20:01","modified_gmt":"2022-08-06T14:20:01","slug":"come-installare-flask","status":"publish","type":"post","link":"https:\/\/alessandromasciadri.com\/come-installare-flask\/","title":{"rendered":"Come installare Flask"},"content":{"rendered":"\t\t<div data-akihiro-type=\"ama-post\" data-akihiro-id=\"976\" class=\"akihiro akihiro-976\" data-akihiro-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"akihiro-section akihiro-top-section akihiro-element akihiro-element-e25b1a3 akihiro-section-boxed akihiro-section-height-default akihiro-section-height-default\" data-id=\"e25b1a3\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"akihiro-container akihiro-column-gap-default\">\n\t\t\t\t\t<div class=\"akihiro-column akihiro-col-100 akihiro-top-column akihiro-element akihiro-element-ff5e465\" data-id=\"ff5e465\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"akihiro-widget-wrap akihiro-element-populated\">\n\t\t\t\t\t\t<div class=\"akihiro-element akihiro-element-fce6530 akihiro-widget akihiro-widget-text-editor\" data-id=\"fce6530\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Flask \u00e8 un web framework che si presenta sottoforma di modulo Python e permette lo sviluppo di applicazioni web basate su questo ormai diffusissimo linguaggio di programmazione.<\/p><p>Flask viene definito un micro framework in quanto \u00e8 sprovvisto di ORM (Object Relational Manager), ossia di un abstraction layer per la gestione di database.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-67710c9 akihiro-widget akihiro-widget-heading\" data-id=\"67710c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Perch\u00e9 Flask \u00e8 una buona scelta<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-c072906 akihiro-widget akihiro-widget-text-editor\" data-id=\"c072906\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Una delle principali ragioni per l&#8217;adozione di Flask per i propri progetti di sviluppo \u00e8 la sua semplicit\u00e0 e bassa difficolt\u00e0 di apprendimento dello strumento. Flask, a differenza di framework come Django ha un funzionamento in perfetto spirito Pythonico avendo infatti una curva di apprendimento molto bassa.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-29d2f90 akihiro-widget akihiro-widget-heading\" data-id=\"29d2f90\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Installazione di Flask<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-e53d82a akihiro-widget akihiro-widget-text-editor\" data-id=\"e53d82a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Anche il processo di installazione di Flask \u00e8 davvero molto semplice. Basta infatti seguire questi semplici passi per ottenere un ambiente di sviluppo pronto all&#8217;uso.<\/p><p>Siccome l&#8217;utilizzo dei Virtual Environment \u00e8 una best practice, iniziamo con il crearne uno per il nostro progetto Flask.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-a35c5db akihiro-widget akihiro-widget-code-highlight\" data-id=\"a35c5db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>mkdir my-flask-app\npython3 -m venv my-flask-app<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-1e53966 akihiro-widget akihiro-widget-text-editor\" data-id=\"1e53966\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Attiviamo l&#8217;ambiente virtuale appena creato<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-4b09829 akihiro-widget akihiro-widget-code-highlight\" data-id=\"4b09829\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>cd my-flask-app\nsource bin\/activate<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-5aa728e akihiro-widget akihiro-widget-text-editor\" data-id=\"5aa728e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Siamo quindi pronti per installare Flask<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-8346b13 akihiro-widget akihiro-widget-code-highlight\" data-id=\"8346b13\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash \">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>pip install Flask<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-cb4e000 akihiro-widget akihiro-widget-text-editor\" data-id=\"cb4e000\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Flask \u00e8 ora installato e pronto all&#8217;uso.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-661e264 akihiro-widget akihiro-widget-heading\" data-id=\"661e264\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Dipendenze<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-adfa540 akihiro-widget akihiro-widget-text-editor\" data-id=\"adfa540\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>L&#8217;installazione di Flask si trascina delle dipendenze che verranno automaticamente installate.<\/p><ul><li><a href=\"https:\/\/palletsprojects.com\/p\/werkzeug\/\">Werkzeug<\/a>, implementazione di WSGI, l&#8217;interfaccia Python standard tra applicazioni e server<\/li><li><a href=\"https:\/\/palletsprojects.com\/p\/jinja\/\">Jinja<\/a>, un template language che esegue il render delle pagine che l&#8217;applicazione eroga.<\/li><li><a href=\"https:\/\/palletsprojects.com\/p\/markupsafe\/\">MarkupSafe<\/a>, dipendenza di Jinja che esegue l&#8217;escaping di input non sicuri quando esegue il rendering dei templates al fine di evitare attacchi di tipo injection.<\/li><li><a href=\"https:\/\/palletsprojects.com\/p\/itsdangerous\/\">ItsDangerous<\/a>, che firma i dati al fine di assicurarne l&#8217;integrit\u00e0. Questa estensione sta alla base della protezione dei cookies Flask di sessione.<\/li><li><a href=\"https:\/\/palletsprojects.com\/p\/click\/\">Click<\/a>, un framework per scrivere applicazioni a riga di comando. Mette a disposizione i comandi Flask. Permette anche l&#8217;aggiunta di comandi custom.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Flask \u00e8 un web framework che si presenta sottoforma di modulo Python e permette lo sviluppo di applicazioni web basate su questo ormai diffusissimo linguaggio di programmazione. Flask viene definito un micro framework in quanto \u00e8 sprovvisto di ORM (Object Relational Manager), ossia di un abstraction layer per la gestione di database. Perch\u00e9 Flask \u00e8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[28,12],"class_list":["post-976","post","type-post","status-publish","format-standard","hentry","category-programmazione","tag-flask","tag-python"],"_links":{"self":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/976","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/comments?post=976"}],"version-history":[{"count":7,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/976\/revisions"}],"predecessor-version":[{"id":987,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/976\/revisions\/987"}],"wp:attachment":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/media?parent=976"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/categories?post=976"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/tags?post=976"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}