Entry detail

Notable changes in Django's SVN trunk since 0.96

After someone asked about it in #django, I had a quick trawl through the Django Trac's Timeline to see what's happened in trunk since 0.96.

I've been tracking it for a number of weeks now while developing new applications, as it's reached the point where there are just too many useful new features not to, especially if you've been waiting for DecimalField or you need to work with non-ASCII data.

Taken along with the Backwards Incompatible Changes wiki page, this should give you a good idea of what's new in Django's SVN trunk.

Disclaimer: the author takes no responsibility for ensuring he's actually linked to the correct changesets :-p

Updated on 4th September, 2007

Changeset Description
4830Added {% with %} tag, for caching the result of method which will be used more than once.
4857Added django.contrib.webdesign.
4901Added the ability to name URL patterns. Helps with disambiguity reverse matches.
5011Added django.contrib.databrowse.
5072Made values for login, logout and post-login redirect URLs configurable.
5141Added EmailMessage and SMTPConnection classes.
5144Added support for TLS connections to email handling. This means servers like Google's SMTP server can now be used for admin emails.
5146Added BCC support to the EmailMessage class.
5156Added assertFormError, assertTemplateUsed and assertTemplateNotUsed for use during unit testing.
5209Allow callables as initial data in newforms.
5289Added pop() method to QueryDict.
5357Added the ability to display author names without email addresses to RSS 2.0 feeds.
5379Added a context processor that puts MEDIA_URL in the context, and added that context processor to the default set.
5385You can now use extra(select=...) with values().
5409Fixed problem with specifying a 'fields' argument to a JSON serializer.
5443Added list unpacking to for loops in templates.
5516Added caching speed-ups to reverse URL matching.
5530Allow dots in URL pattern names (although the string in that case is first tried as an import path and only then falls back to being treated as a pattern).
5547Added ability to create multipart email messages.
5550Added support for custom email headers.
5555Added support for regex lookups.
5594'View on site' now works for https URLs.
5630Fixed reverse URL creation to work with non-ASCII arguments.
5653Added RequestSite class to sites framework.
5658Added 'raw' argument to save method, to override any pre-save processing.
5725Added a db_type() method to the database Field class. This is a hook for calculating the database column type for a given Field.
5729Added support for the suite() method recommended by the Python unittest docs.
5746Modified the get_object_or_404/get_list_or_404 shortcuts to also accept QuerySets.
5766Added support for database cache table in test database.
5768Fixed bug with using values() and extra(select) in the same QuerySet
5771Added added set_unusable_password() and has_usable_password() methods to the User object
5803Renamed maxlength argument to max_length for oldforms FormFields and db model Fields. This is fully backwards compatible at the moment since the legacy maxlength argument is still supported. Using maxlength will, however, issue a PendingDeprecationWarning when used.
5804Added dynamic save_m2m method() to forms created with form_for_model and form_for_instance on save(commit=False).
5844Added content_type as an alias for mimetype to the HttpResponse constructor.
5867Added documentation for widgets in newforms.
5877In generic views, set the default name for the slug field to 'slug'.
5898Major refactoring of django.core.management -- it's now a package rather than a 1730-line single module. All django-admin/manage.py commands are now stored in separate modules.
5933Fixed model saving so that 0 can be used as a primary key value.
5950Began implementing BaseDatabaseOperations? class for every database backend. This class will be used to hold the database-specific methods that currently live at the module level in each backend.
5990Added Subversion revision number to Django version string.
6002It's now possible again to use Django without a database. This had temporarily gotten buggy after the django.core.management refactoring last week.
6013The 'flush' and 'sqlflush' management commands no longer touch tables that Django is not aware of (tables that are not in INSTALLED_APPS and/or do not have associated models).
6019Changed the unordered_list template filter to use a more simple format, while maintaining backwards compatibility with the old format. unordered_list now works with a simple list of items.
6039In the test client, Added tracking of the client and request that caused a response so that the assertRedirects check can use the correct client when following a redirect.

Posted by jonny on July 28, 2007

Comments

Eric Florenzano August 1, 2007 at 4:13 a.m.

#5530 is the must-have for me. I absolutely love having names so that I can change my urls later and not have to worry about changing the templates.

Ben Walton September 7, 2007 at 11:24 p.m.

#5379 - Didn't know this, I can delete my custom context processor now. Cheers!

Comments are currently disabled