{"id":22292,"date":"2020-08-05T07:31:25","date_gmt":"2020-08-05T05:31:25","guid":{"rendered":"https:\/\/savinol.sg-host.com\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/"},"modified":"2020-08-05T07:31:25","modified_gmt":"2020-08-05T05:31:25","slug":"django-3-1-le-novita-del-web-framework-basato-su-python","status":"publish","type":"post","link":"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/","title":{"rendered":"Django 3.1: le novit\u00e0 del web framework basato su Python"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>Lo sviluppo di applicazioni web pu\u00f2 essere effettuato sfruttando un numero di framework sempre crescente. Se i pi\u00f9 tradizionalisti si affidano a <a href=\"https:\/\/www.html.it\/guide\/guida-php-di-base\/\">PHP<\/a> o, pi\u00f9 recentemente, a <a href=\"https:\/\/www.html.it\/guide\/guida-javascript-di-base\/\">JavaScript<\/a> e <a href=\"https:\/\/www.html.it\/guide\/guida-nodejs\/\">Node.js<\/a>, va detto che l\u2019uso di <a href=\"https:\/\/www.html.it\/guide\/guida-python\/\">Python<\/a> anche in questo contesto comincia a riscontrare pareri sempre pi\u00f9 positivi.<\/p>\n<p>Nel contesto dello sviluppo web con Python esistono varie opzioni (ne avevamo viste alcune in <a href=\"https:\/\/www.html.it\/05\/04\/2017\/5-python-framework-per-sviluppare-web-application\/\">questo articolo<\/a>). Una delle pi\u00f9 diffuse \u00e8 sicuramente rappresentata da <a href=\"https:\/\/www.html.it\/guide\/guida-django-10\/\">Django<\/a>, giunto proprio oggi alla versione <strong>3.1<\/strong>.<\/p>\n<p>Nel seguito vedremo le principali novit\u00e0 introdotto con questo nuovo rilascio, che pu\u00f2 essere utilizzato sfruttando le versioni di Python 3.6, 3.7 e 3.8.<\/p>\n<h2>Supporto all\u2019esecuzione asincrona<\/h2>\n<p>Gi\u00e0 con il rilascio di Django 3.0 era stata introdotta (pur con molte limitazioni) la possibilit\u00e0 di sfruttare la parola chiave <code>async<\/code> per definire funzioni asincrone. Con il nuovo rilascio, \u00e8 possibile creare view che vengono eseguite in un contesto <strong>asincrono<\/strong>:<\/p>\n<pre><code class=\"language-python\">\nasync def my_view(request):\n    await asyncio.sleep(0.5)\n    return HttpResponse('Hello, async world!')\n<\/code><\/pre>\n<p>Per sfruttare al meglio questa funzionalit\u00e0, \u00e8 per\u00f2 necessario eseguire Django in un contesto <strong>ASGI<\/strong>, in quanto l\u2019uso di <strong>WSGI<\/strong> non permette di beneficiare degli incrementi prestazionali derivanti dall\u2019esecuzione asincrona.<\/p>\n<h2>JSONField<\/h2>\n<p>Un\u2019altra interessante caratteristica introdotta con il nuovo rilascio \u00e8 la possibilit\u00e0 di utilizzare la classe <code>JSONField<\/code> con tutti i database supportati. Questa nuova classe supporta introspezione, lookup e trasformazioni che, finora, rappresentavano un\u2019esclusiva dell\u2019interfacciamento con <a href=\"https:\/\/www.html.it\/articoli\/uno-sguardo-da-vicino-alle-funzionalit-di-postgresql\/\">PostgreSQL<\/a>:<\/p>\n<pre><code class=\"language-python\">\nfrom django.db import models\nclass ContactInfo(models.Model):\n    data = models.JSONField()\nContactInfo.objects.create(data={\n    'name': 'John',\n    'cities': ['London', 'Cambridge'],\n    'pets': {'dogs': ['Rufus', 'Meg']},\n})\nContactInfo.objects.filter(\n    data__name='John',\n    data__pets__has_key='dogs',\n    data__cities__contains='London',\n).delete()\n<\/code><\/pre>\n<h2>Hashing<\/h2>\n<p>Con Django 3.1 \u00e8 stato introdotto anche il supporto dell\u2019algoritmo di hashing <strong>SHA-256<\/strong>. Ci\u00f2 migliora notevolmente la <strong>sicurezza<\/strong> delle applicazioni basate su questo framework, dal momento che token, cookie e variabili di sessione utilizzano ora questo algoritmo.<\/p>\n<p>\u00c8 bene precisare che, nel caso in cui si passi da una versione precedente di Django alla 3.1, pu\u00f2 essere necessario specificare questa opzione, assegnando un opportuno valore alla variabile <code>DEFAULT_HASHING_ALGORITHM<\/code>:<\/p>\n<pre><code class=\"language-python\">\nDEFAULT_HASHING_ALGORITHM = 'sha256'\n<\/code><\/pre>\n<p>Per garantire, invece, la retrocompatibilit\u00e0, dovremo assegnare un valore diverso:<\/p>\n<pre><code class=\"language-python\">\nDEFAULT_HASHING_ALGORITHM = 'sha1'\n<\/code><\/pre>\n<h2>Ulteriori novit\u00e0<\/h2>\n<p>Quelle viste fin qui non sono le uniche novit\u00e0 della nuova versione di Django. Per ottenere una panoramica completa, rimandiamo alle <a href=\"https:\/\/docs.djangoproject.com\/en\/3.1\/releases\/3.1\/\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">note di rilascio<\/a>, reperibili direttamente sul sito ufficiale del progetto.<\/p>\n<p><em>Fonte<\/em>: <a href=\"https:\/\/docs.djangoproject.com\/en\/3.1\/releases\/3.1\/\" class=\"text-link text-link--special\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><span class=\"underline\">Django<\/span><i class=\"ico-external\"\/><\/a><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"http:\/\/feedproxy.google.com\/~r\/htmlitedit\/~3\/ZhMvApzJzvg\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lo sviluppo di applicazioni web pu\u00f2 essere effettuato sfruttando un numero di framework sempre crescente. Se i pi\u00f9 tradizionalisti si affidano a PHP o, pi\u00f9 recentemente, a JavaScript e Node.js, va detto che l\u2019uso di Python anche in questo contesto comincia a riscontrare pareri sempre pi\u00f9 positivi. Nel contesto dello sviluppo web con Python esistono&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_s2mail":""},"categories":[37],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Django 3.1: le novit\u00e0 del web framework basato su Python - AGENZIA WEB Italia<\/title>\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.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Django 3.1: le novit\u00e0 del web framework basato su Python - AGENZIA WEB Italia\" \/>\n<meta property=\"og:description\" content=\"Lo sviluppo di applicazioni web pu\u00f2 essere effettuato sfruttando un numero di framework sempre crescente. Se i pi\u00f9 tradizionalisti si affidano a PHP o, pi\u00f9 recentemente, a JavaScript e Node.js, va detto che l\u2019uso di Python anche in questo contesto comincia a riscontrare pareri sempre pi\u00f9 positivi. Nel contesto dello sviluppo web con Python esistono...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/\" \/>\n<meta property=\"og:site_name\" content=\"AGENZIA WEB Italia\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-05T05:31:25+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\"},\"headline\":\"Django 3.1: le novit\u00e0 del web framework basato su Python\",\"datePublished\":\"2020-08-05T05:31:25+00:00\",\"dateModified\":\"2020-08-05T05:31:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/\"},\"wordCount\":334,\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"articleSection\":[\"News\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/\",\"name\":\"Django 3.1: le novit\u00e0 del web framework basato su Python - AGENZIA WEB Italia\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\"},\"datePublished\":\"2020-08-05T05:31:25+00:00\",\"dateModified\":\"2020-08-05T05:31:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Django 3.1: le novit\u00e0 del web framework basato su Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"name\":\"AGENZIA WEB Italia\",\"description\":\"Web design Web agency Italia\",\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\",\"name\":\"Multimedia Web\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"contentUrl\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"width\":200,\"height\":57,\"caption\":\"Multimedia Web\"},\"image\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Django 3.1: le novit\u00e0 del web framework basato su Python - AGENZIA WEB Italia","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.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/","og_locale":"it_IT","og_type":"article","og_title":"Django 3.1: le novit\u00e0 del web framework basato su Python - AGENZIA WEB Italia","og_description":"Lo sviluppo di applicazioni web pu\u00f2 essere effettuato sfruttando un numero di framework sempre crescente. Se i pi\u00f9 tradizionalisti si affidano a PHP o, pi\u00f9 recentemente, a JavaScript e Node.js, va detto che l\u2019uso di Python anche in questo contesto comincia a riscontrare pareri sempre pi\u00f9 positivi. Nel contesto dello sviluppo web con Python esistono...","og_url":"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/","og_site_name":"AGENZIA WEB Italia","article_published_time":"2020-08-05T05:31:25+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"admin","Tempo di lettura stimato":"2 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/#article","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/"},"author":{"name":"admin","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42"},"headline":"Django 3.1: le novit\u00e0 del web framework basato su Python","datePublished":"2020-08-05T05:31:25+00:00","dateModified":"2020-08-05T05:31:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/"},"wordCount":334,"publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"articleSection":["News"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/","name":"Django 3.1: le novit\u00e0 del web framework basato su Python - AGENZIA WEB Italia","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website"},"datePublished":"2020-08-05T05:31:25+00:00","dateModified":"2020-08-05T05:31:25+00:00","breadcrumb":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/django-3-1-le-novita-del-web-framework-basato-su-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.nycwebdesign.eu\/webdesign\/"},{"@type":"ListItem","position":2,"name":"Django 3.1: le novit\u00e0 del web framework basato su Python"}]},{"@type":"WebSite","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","name":"AGENZIA WEB Italia","description":"Web design Web agency Italia","publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization","name":"Multimedia Web","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","contentUrl":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","width":200,"height":57,"caption":"Multimedia Web"},"image":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42","name":"admin","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","caption":"admin"}}]}},"_links":{"self":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/22292"}],"collection":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/comments?post=22292"}],"version-history":[{"count":0,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/22292\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/media?parent=22292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/categories?post=22292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/tags?post=22292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}