Django 5.0: обзор новых возможностей

Django 5.0: обзор новых возможностей

Django 5.0 вышел в декабре 2023 года и принес множество улучшений для разработчиков. Рассмотрим ключевые нововведения этой мажорной версии.

Основные изменения

Facet фильтры в Django Admin

Одно из самых заметных обновлений — новая возможность faceted filtering в админке. Это позволяет добавлять фильтры с подсчетом количества элементов.

from django.contrib import admin
from .models import Article

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_filter = ['category', 'status']

    # Новое: автоматический подсчет
    def get_list_filter(self, request):
        return [
            ('category', admin.RelatedFieldListFilter),
            ('status', admin.ChoicesFieldListFilter),
        ]

Упрощенные формы

Django 5.0 упростил работу с формами, добавив новые возможности для валидации.

from django import forms

class ContactForm(forms.Form):
    name = forms.CharField(max_length=100)
    email = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)

    # Новый синтаксис для валидации
    def clean(self):
        cleaned_data = super().clean()
        # Валидация стала проще
        return cleaned_data

Улучшения в ORM

Добавлены новые возможности для работы с базой данных.

from django.db.models import Q, F

# Новые возможности аннотаций
articles = Article.objects.annotate(
    is_popular=Q(views__gt=1000) & Q(likes__gt=100)
).filter(is_popular=True)

# Улучшенная работа с JSON полями
Article.objects.filter(
    metadata__contains={'featured': True}
)

Асинхронные view

Django 5.0 улучшил поддержку асинхронных представлений.

from django.http import JsonResponse
import asyncio

async def async_view(request):
    # Асинхронные операции
    data = await fetch_external_data()
    return JsonResponse({'data': data})

async def fetch_external_data():
    await asyncio.sleep(1)
    return {'result': 'success'}

Заключение

Django 5.0 — солидное обновление с улучшениями в админке, ORM и асинхронной поддержке. Рекомендуется для всех новых проектов.

316
55
2

Комментарии (2)

, чтобы оставить комментарий

maria_design
Мария Дизайнова 1 неделю, 1 день назад

Интересный взгляд на проблему. Не согласен с некоторыми моментами, но в целом качественно.

❤️ 42
maria_design
Мария Дизайнова 1 неделю, 1 день назад

А как это применить в моем случае?

❤️ 24