1. 13
  1.  

  2. 12

    Highlights:

    • No longer supports Python 2.x
    • Type coercion of URL parameters in routes
    • The handy admin site that comes built-in now sucks less on mobile
    • Removed support for bytestrings in some places (now Unicode everywhere)
    • Default MySQL isolation level is now “read committed”, not the DB default of “repeatable read”, which was causing difficult-to-reproduce concurrency bugs (related issue and PR)
    • Foreign key constraints are now enabled on SQLite, so you may need to scrub your data for constraint violations before upgrading
    1. 2

      support for Python 2.7 is removed

      That’s a shame. I do definitely appreciate Django’s relatively long LTS support timeframes and the work that has to go into that but it’s unfortunate I’ll have to make a decision between the py2 line and Django in 2020.

      1. 2

        I’m sorry but the only shame is that it took so long. Supporting obsolete versions is expensive, and the decision to move off Python 2 has been made, what, 10 years ago? I don’t know why people insisting on supporting Python 2 expect the entire community to pay the price. Still.

        1. 2

          I don’t know why people insisting on supporting Python 2

          At least in my case it’s because I don’t view Python 3 as a net gain with respect to Py2. People are still starting projects in Py2 despite library support for Py3 having been solid for years, migration costs are pretty low (you can migrate a fairly large codebase in a weekend). It seems like there’s pretty good evidence that the reason Py3 adoption is slow is because people don’t particularly want to work in Py3, so it’s natural that major libraries dropping support for Py2 isn’t happy news: if forces us to use something we otherwise wouldn’t.