Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Django 3.1: le novità del web framework basato su Python

Il nuovo rilascio di Django, web framework basato su Python e giunto alla versione 3.1, introduce diverse novità: scopriamole.
Django 3.1: le novità del web framework basato su Python
Il nuovo rilascio di Django, web framework basato su Python e giunto alla versione 3.1, introduce diverse novità: scopriamole.
Link copiato negli appunti

Lo sviluppo di applicazioni web può essere effettuato sfruttando un numero di framework sempre crescente. Se i più tradizionalisti si affidano a PHP o, più recentemente, a JavaScript e Node.js, va detto che l'uso di Python anche in questo contesto comincia a riscontrare pareri sempre più positivi.

Nel contesto dello sviluppo web con Python esistono varie opzioni (ne avevamo viste alcune in questo articolo). Una delle più diffuse è sicuramente rappresentata da Django, giunto proprio oggi alla versione 3.1.

Nel seguito vedremo le principali novità introdotto con questo nuovo rilascio, che può essere utilizzato sfruttando le versioni di Python 3.6, 3.7 e 3.8.

Supporto all'esecuzione asincrona

Già con il rilascio di Django 3.0 era stata introdotta (pur con molte limitazioni) la possibilità di sfruttare la parola chiave async per definire funzioni asincrone. Con il nuovo rilascio, è possibile creare view che vengono eseguite in un contesto asincrono:

async def my_view(request):
    await asyncio.sleep(0.5)
    return HttpResponse('Hello, async world!')

Per sfruttare al meglio questa funzionalità, è però necessario eseguire Django in un contesto ASGI, in quanto l'uso di WSGI non permette di beneficiare degli incrementi prestazionali derivanti dall'esecuzione asincrona.

JSONField

Un'altra interessante caratteristica introdotta con il nuovo rilascio è la possibilità di utilizzare la classe JSONField con tutti i database supportati. Questa nuova classe supporta introspezione, lookup e trasformazioni che, finora, rappresentavano un'esclusiva dell'interfacciamento con PostgreSQL:

from django.db import models
class ContactInfo(models.Model):
    data = models.JSONField()
ContactInfo.objects.create(data={
    'name': 'John',
    'cities': ['London', 'Cambridge'],
    'pets': {'dogs': ['Rufus', 'Meg']},
})
ContactInfo.objects.filter(
    data__name='John',
    data__pets__has_key='dogs',
    data__cities__contains='London',
).delete()

Hashing

Con Django 3.1 è stato introdotto anche il supporto dell'algoritmo di hashing SHA-256. Ciò migliora notevolmente la sicurezza delle applicazioni basate su questo framework, dal momento che token, cookie e variabili di sessione utilizzano ora questo algoritmo.

È bene precisare che, nel caso in cui si passi da una versione precedente di Django alla 3.1, può essere necessario specificare questa opzione, assegnando un opportuno valore alla variabile DEFAULT_HASHING_ALGORITHM:

DEFAULT_HASHING_ALGORITHM = 'sha256'

Per garantire, invece, la retrocompatibilità, dovremo assegnare un valore diverso:

DEFAULT_HASHING_ALGORITHM = 'sha1'

Ulteriori novità

Quelle viste fin qui non sono le uniche novità della nuova versione di Django. Per ottenere una panoramica completa, rimandiamo alle note di rilascio, reperibili direttamente sul sito ufficiale del progetto.

Ti consigliamo anche