Django 1.0 has a number of backwards-incompatible changes from Django 0.96. If you have apps written against Django 0.96 that you need to port, see our detailed porting guide:
A complete list of backwards-incompatible changes can be found at http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges.
What's new in Django 1.0
========================
A *lot*!
Since Django 0.96, we've made over 4,000 code commits, fixed more than 2,000 bugs, and edited, added, or removed around 350,000 lines of code. We've also added 40,000 lines of new documentation, and greatly improved what was already there.
In fact, new documentation is one of our favorite features of Django 1.0, so we might as well start there. First, there's a new documentation site:
http://docs.djangoproject.com/
The documentation has been greatly improved, cleaned up, and generally made
awesome. There's now dedicated search, indexes, and more.
We can't possibly document everything that's new in 1.0, but the documentation will be your definitive guide. Anywhere you see something like:
.. versionadded:: 1.0
This feature is new in Django 1.0
You'll know that you're looking at something new or changed.
The other major highlights of Django 1.0 are:
Re-factored admin application
----------------------------
The Django administrative interface (``django.contrib.admin``) has been
completely refactored; admin definitions are now completely decoupled from model
definitions (no more ``class Admin`` declaration in models!), rewritten to use
Django's new form-handling library (introduced in the 0.96 release as
``django.newforms``, and now available as simply ``django.forms``) and
redesigned with extensibility and customization in mind. Full documentation for
the admin application is available online in the official Django documentation:
See the :ref:`admin reference <ref-contrib-admin>` for details
Improved Unicode handling
-------------------------
Django's internals have been refactored to use Unicode throughout; this
drastically simplifies the task of dealing with non-Western-European content and
data in Django. Additionally, utility functions have been provided to ease
interoperability with third-party libraries and systems which may or may not
handle Unicode gracefully. Details are available in Django's Unicode-handling
documentation.
See :ref:`<ref-unicode>`.
An improved ORM
---------------
Django's object-relational mapper -- the component which provides the mapping
between Django model classes and your database, and which mediates your database
queries -- has been dramatically improved by a massive refactoring. For most
users of Django this is backwards-compatible; the public-facing API for database
querying underwent a few minor changes, but most of the updates took place in
the ORM's internals. A guide to the changes, including backwards-incompatible
modifications and mentions of new features opened up by this refactoring, is