I'm only experienced with the Oracle backend, but I believe only Postgres stores datetimes with timezone information. Otherwise, Django assumes all datetimes in the database are UTC. For the most portability you should assume that database values will be in UTC.
The user's local timezone is something you have to set, either in middleware or somewhere in the request processing.
I think there's no packages TimezoneMiddleware because how you do it is highly up to your app UI. Maybe you want to use GeoIP? Maybe you want to store it in the user's profile? Maybe you want a dropdown on each page? All of those are valid options.