Django 5.0 Uma grande atualização para o framework web popular
- Published on
O Django 5.0, a versão mais recente do popular framework web, foi oficialmente lançado em 4 de dezembro de 2023.
Esta atualização significativa traz uma série de novos recursos, melhorias e otimizações, tornando-o um salto substancial em relação ao seu predecessor, o Django 4.2.
O lançamento foi feito sob medida para aumentar a eficiência e capacidade do desenvolvimento web, oferecendo aos desenvolvedores mais ferramentas e funcionalidades para construir aplicações web robustas.
Os principais destaques do Django 5.0 incluem:
Compatibilidade aprimorada com Python: Agora suporta as versões 3.10, 3.11 e 3.12 do Python.
Introdução de novos recursos: Filtros de Faceta no Admin, Templates Simplificados para Renderização de Campo de Formulário e Valores Padrão Calculados por Banco de Dados.
Implementação de Campos de Modelo Gerados por Banco de Dados: Adicionando mais flexibilidade e eficiência às interações com o banco de dados.
Opções expandidas para declarar opções de campo: Permitindo configurações de campo de formulário e modelo mais versáteis e dinâmicas.
Numerosas adições e melhorias de recursos menores em vários módulos do Django: Incluindo django.contrib.admin, django.contrib.auth e mais.
Mudanças e depreciações incompatíveis com versões anteriores: Com o objetivo de otimizar o framework e preparar o terreno para desenvolvimentos futuros.
Este lançamento marca um marco significativo na evolução do Django, oferecendo funcionalidade aprimorada e maior facilidade de uso para desenvolvedores em todo o mundo.
Compatibilidade com Python
O Django 5.0 apresenta compatibilidade com versões mais recentes do Python, ampliando significativamente seu alcance e capacidades.
Esta versão do Django suporta Python 3.10, 3.11 e 3.12.
Essa expansão na compatibilidade garante que o Django permaneça em sincronia com os últimos avanços do Python, oferecendo aos desenvolvedores os benefícios dos recursos e melhorias mais recentes do ecossistema Python.
Embora o Django 5.0 suporte essas três versões do Python, a equipe do Django recomenda fortemente o uso da versão mais recente de cada série.
Esta recomendação é feita para garantir o melhor desempenho, segurança e acesso aos recursos mais recentes.
Usar a versão mais recente do Python garante que os desenvolvedores possam aproveitar todo o potencial do Django 5.0, beneficiando-se da compatibilidade otimizada e dos aprimoramentos que acompanham as versões mais recentes do Python.
Novos Recursos no Django 5.0
Filtros de Faceta no Admin
O Django 5.0 introduz contagens de facetas para filtros aplicados na lista de alterações do admin.
Este recurso, que pode ser ativado/desativado por meio da UI, aprimora a interface do admin exibindo contagens de facetas ao lado dos filtros, fornecendo uma visão geral rápida da distribuição de dados.
O comportamento dos filtros de faceta pode ser configurado usando o atributo ModelAdmin.show_facets.
Templates Simplificados para Renderização de Campo de Formulário
Esta versão simplifica a renderização de campos de formulário do Django com a introdução de templates de grupo de campo.
Esses templates facilitam a renderização simplificada de componentes de campo de formulário, como rótulos, widgets, texto de ajuda e erros, aprimorando a eficiência e clareza da apresentação do formulário.
Antes:
<form>
...
<div>
{{ form.name.label_tag }}
{% if form.name.help_text %}
<div class="helptext" id="{{ form.name.auto_id }}_helptext">
{{ form.name.help_text|safe }}
</div>
{% endif %}
{{ form.name.errors }}
{{ form.name }}
<div class="row">
<div class="col">
{{ form.email.label_tag }}
{% if form.email.help_text %}
<div class="helptext" id="{{ form.email.auto_id }}_helptext">
{{ form.email.help_text|safe }}
</div>
{% endif %}
{{ form.email.errors }}
{{ form.email }}
</div>
<div class="col">
{{ form.password.label_tag }}
{% if form.password.help_text %}
<div class="helptext" id="{{ form.password.auto_id }}_helptext">
{{ form.password.help_text|safe }}
</div>
{% endif %}
{{ form.password.errors }}
{{ form.password }}
</div>
</div>
</div>
...
</form>
Agora:
<form>
...
<div>
{{ form.name.as_field_group }}
<div class="row">
<div class="col">{{ form.email.as_field_group }}</div>
<div class="col">{{ form.password.as_field_group }}</div>
</div>
</div>
...
</form>
Valores Padrão Calculados por Banco de Dados
Django 5.0 permite definir valores padrão calculados pelo banco de dados usando o parâmetro Field.db_default. Por exemplo:
from django.db import models
from django.db.models.functions import Now, Pi
class MyModel(models.Model):
age = models.IntegerField(db_default=18)
created = models.DateTimeField(db_default=Now())
circumference = models.FloatField(db_default=2 * Pi())
Este recurso oferece mais flexibilidade no tratamento de valores padrão diretamente no nível do banco de dados.
Campo de Modelo Gerado por Banco de Dados
O novo GeneratedField no Django 5.0 permite a criação de colunas geradas pelo banco de dados.
Este campo é suportado por todos os backends de banco de dados e é útil para campos que são calculados a partir de outros campos.
Por exemplo:
from django.db import models
from django.db.models import F
class Square(models.Model):
side = models.IntegerField()
area = models.GeneratedField(
expression=F("side") * F("side"),
output_field=models.BigIntegerField(),
db_persist=True,
)
Este recurso é particularmente benéfico para otimizar o desempenho do banco de dados e garantir a integridade dos dados.
Mais Opções para Declarar Opções de Campo
As opções de campo no Django 5.0 oferecem maior flexibilidade.
Os atributos (Field.choices
) e (ChoiceField.choices
) agora suportam mapeamentos ou funções, além de iteráveis.
Por exemplo:
from django.db import models
Medal = models.TextChoices("Medal", "GOLD SILVER BRONZE")
SPORT_CHOICES = {
"Martial Arts": {"judo": "Judo", "karate": "Karate"},
"Racket": {"badminton": "Badminton", "tennis": "Tennis"},
"unknown": "Unknown",
}
def get_scores():
return [(i, str(i)) for i in range(10)]
class Winner(models.Model):
name = models.CharField(...)
medal = models.CharField(..., choices=Medal)
sport = models.CharField(..., choices=SPORT_CHOICES)
score = models.IntegerField(choices=get_scores)
Esta atualização simplifica a maneira como as opções são declaradas e tratadas dentro de modelos e formulários.
Recursos Menores em Vários Módulos
Django 5.0 também inclui uma série de recursos menores em diferentes módulos:
django.contrib.admin:
Novos métodos para personalizar querysets de entradas de log e recuperar classes admin. Versão de jQuery atualizada. Propriedades de exibição de lista aprimoradas.
django.contrib.auth:
Aumento do número de iterações padrão para o hasher de senhas PBKDF2. Novas funções assíncronas.
django.contrib.contenttypes:
Suporte aprimorado para prefetching de GenericForeignKey.
django.contrib.gis:
Novas funções e métodos para manipulação de dados GIS. Suporte atualizado para versões GDAL e GEOS.
django.contrib.messages:
Novos métodos de teste para mensagens.
django.contrib.postgres:
Adicionado um novo atributo para personalizar códigos de erro de validação.