Django 5.x removes 3.2x recommendation for timezone middleware

Remember 3.2? https://docs.djangoproject.com/en/3.2/topics/i18n/timezones/

Python
import pytz

from django.utils import timezone

class TimezoneMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        tzname = request.session.get('django_timezone')
        if tzname:
            timezone.activate(pytz.timezone(tzname))
        else:
            timezone.deactivate()
        return self.get_response(request)

Yeah, don’t do that anymore. Use “zoneinfo.ZoneInfo(…)” https://docs.djangoproject.com/en/5.2/topics/i18n/timezones/

Python
import zoneinfo

from django.utils import timezone


class TimezoneMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        tzname = request.session.get("django_timezone")
        if tzname:
            timezone.activate(zoneinfo.ZoneInfo(tzname))
        else:
            timezone.deactivate()
        return self.get_response(request)

More info: https://claude.ai/code/artifact/40c5d2fa-d89d-4bf5-9f0f-523333c6d7df