Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Added draft release notes for 0.96 (which should be coming closer...)

git-svn-id: http://code.djangoproject.com/svn/django/trunk@4778 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 2efd343a7cf05d92427d49d85ecf883f9e23d6c9 1 parent e63ff1d
Jacob Kaplan-Moss authored March 22, 2007

Showing 1 changed file with 224 additions and 0 deletions. Show diff stats Hide diff stats

  1. 224  docs/release_notes_0.96.txt
224  docs/release_notes_0.96.txt
... ...
@@ -0,0 +1,224 @@
  1
+=================================
  2
+Django version 0.96 release notes
  3
+=================================
  4
+
  5
+Welcome to Django 0.96!
  6
+
  7
+The primary goal for 0.96 is a cleanup and stabilization of the features
  8
+introduced in 0.95. There have been a few small `backwards-incompatible
  9
+changes`_ since 0.95, but nearly all changes shouldn't require any major
  10
+updates.
  11
+
  12
+However, we're also releasing 0.96 now because we have a set of
  13
+backwards-incompatible changes scheduled for the near future. These changes are
  14
+will require code changes for developers tracking the Django development
  15
+version, so if you're looking for a rock-solid, stable, version of Django we
  16
+recommend you stick with Django until the next official release and upgrade all
  17
+at once.
  18
+
  19
+What's new in 0.96?
  20
+===================
  21
+
  22
+This revision represents over a thousand source commits and over four hundred
  23
+bug fixes, so we can't possibly catalog all the changes. Here, we describe the
  24
+most notable changes in this release.
  25
+
  26
+New forms library
  27
+-----------------
  28
+
  29
+``django.newforms`` is Django's fantastic new form-handling library. It's a
  30
+replacement for ``django.forms``, the old form/manipulator/validation framework.
  31
+Both APIs are available in 0.96, but over the next two releases we plan to
  32
+completely replace the old forms framework with this new one.
  33
+
  34
+Our transition plan is:
  35
+
  36
+    * We've copied the current ``django.forms`` to ``django.oldforms``. This
  37
+      allows you to upgrade your code *now* rather than waiting for the
  38
+      backwards-incompatible change and rushing to fix your code after the fact.
  39
+      Just change your import statements like this::
  40
+
  41
+          from django import forms             # 0.95-style
  42
+          from django import oldforms as forms # 0.96-style
  43
+
  44
+    * Before the next release, we will move the current ``django.newforms`` to
  45
+      ``django.forms``. This will be a backwards-incompatible change, and
  46
+      anybody who is still using the old version of ``django.forms`` at that
  47
+      time will need to change their import statements, as described in the
  48
+      previous bullet.
  49
+
  50
+    * We will remove ``django.oldforms`` in the release *after* the next Django
  51
+      release -- the release that comes after the release in which we're
  52
+      creating the new ``django.forms``.
  53
+
  54
+Although the ``newforms`` library will continue to evolve, it's ready for use
  55
+for most common cases. We recommend that anyone new to form handling skip the
  56
+old forms and start with the new.
  57
+
  58
+For more information about ``django.newforms``, read the `newforms
  59
+documentation`_.
  60
+
  61
+.. _newforms documentation: ../newforms/
  62
+
  63
+URLconf improvements
  64
+--------------------
  65
+
  66
+You can now use any callable as the callback in URLconfs (previously, only
  67
+strings that referred to callables were allowed). This allows a much more
  68
+natural use of URLconfs. For example, this URLconf::
  69
+
  70
+    from django.conf.urls.defaults import *
  71
+    
  72
+    urlpatterns = patterns('', 
  73
+        ('^myview/$', 'mysite.myapp.views.myview')
  74
+    )
  75
+    
  76
+can now be rewritten as::
  77
+
  78
+    from django.conf.urls.defaults import *
  79
+    from mysite.myapp.views import myview
  80
+    
  81
+    urlpatterns = patterns('', 
  82
+        ('^myview/$', myview)
  83
+    )
  84
+        
  85
+A very useful application of this can be seen when using decorators: this change
  86
+allows you to apply decorators to views *in your URLconf*. Thus, you can make a
  87
+generic view require login very easily::
  88
+
  89
+    from django.conf.urls.defaults import *
  90
+    from django.contrib.auth.decorators import login_required
  91
+    from django.views.generic.list_detail import object_list
  92
+    from mysite.myapp.models import MyModel
  93
+    
  94
+    info = {
  95
+        "queryset" : MyModel.objects.all(),
  96
+    }
  97
+    
  98
+    urlpatterns = patterns('', 
  99
+        ('^myview/$', login_required(object_list), info)
  100
+    )
  101
+
  102
+Note that both syntaxes (strings and callables) are valid, and will continue to
  103
+be valid for the foreseeable future.  
  104
+
  105
+The test framework
  106
+------------------
  107
+
  108
+Django now includes a test framework so you can start transmuting fear into
  109
+boredom (with apologies to Kent Beck). You can write tests based on doctest_
  110
+or unittest_ and test your views with a simple test client.
  111
+
  112
+There is also new support for "fixtures" -- initial data stored in any of the
  113
+supported `serialization formats`_ that will be loaded into your database at the
  114
+start of your tests. This makes testing with real data much easier.
  115
+
  116
+See `the testing documentation`_ for the full details.
  117
+
  118
+.. _doctest: http://docs.python.org/lib/module-doctest.html
  119
+.. _unittest: http://docs.python.org/lib/module-unittest.html
  120
+.. _the testing documentation: ../testing/
  121
+.. _serialization formats: ../serialization/
  122
+
  123
+
  124
+Improvements to the user admin interface
  125
+----------------------------------------
  126
+
  127
+A small change, but a very nice one: you no longer need to edit MD5 hashes when
  128
+creating and/or updating users from the admin interface.
  129
+
  130
+Django is now hash-free for over a thousand revisions!
  131
+
  132
+Backwards-incompatible changes
  133
+==============================
  134
+
  135
+The following changes may require you to update your code when you switch from
  136
+0.95 to 0.96:
  137
+
  138
+Database constraint names changed
  139
+---------------------------------
  140
+
  141
+The format of the constraint names Django generates for foreign key references
  142
+changed slightly. These names are only used sometimes, when it is not possible
  143
+to put the reference directly on the affected column, so this is not always
  144
+visible.
  145
+
  146
+The effect of this change is that ``manage.py reset`` and similar commands may
  147
+generate SQL with new constraint names and thus generate an error when run
  148
+against the database (the database server will complain about the constraint not
  149
+existing). To fix this, you will need to tweak the output of ``manage.py``
  150
+to match the correct constraint names and pass the results to the
  151
+database server manually. 
  152
+
  153
+You can also fix this by examining the output of ``manage.py sqlall`` and
  154
+renaming database constraints to match the new naming scheme.
  155
+
  156
+Names changes in ``manage.py``
  157
+------------------------------
  158
+
  159
+A few of the options to ``manage.py`` have changed with the addition of fixture
  160
+support:
  161
+
  162
+    * There are new ``dumpdata`` and ``loaddata`` commands, which, as you might
  163
+      expect, will dump and load data to/from the database. These targets
  164
+      operate against one of the serialization formats.
  165
+
  166
+    * The ``sqlinitialdata`` target has been renamed to ``sqlcustom`` to
  167
+      emphasize that ``loaddata`` should be used for data (and ``sqlcustom`` for
  168
+      other custom SQL -- views, stored procedures, etc.).
  169
+      
  170
+    * The vestigal ``install`` target is gone. Use ``syncdb``.
  171
+
  172
+Backslash escaping changed
  173
+--------------------------
  174
+
  175
+The Django database API now escapes backslashes given as query parameters. If
  176
+you have any database API code that match backslashes, and it was working before
  177
+(despite the broken escaping), you'll have to change your code to "unescape" the
  178
+slashes one level.
  179
+
  180
+For example, this used to work::
  181
+
  182
+    # Find text containing a single backslash
  183
+    MyModel.objects.filter(text__contains='\\\\')
  184
+
  185
+The above is now incorrect, and should be rewritten as::
  186
+
  187
+    # Find text containing a single backslash
  188
+    MyModel.objects.filter(text__contains='\\')
  189
+
  190
+Removed ENABLE_PSYCO setting
  191
+----------------------------
  192
+
  193
+The ``ENABLE_PSYCO`` setting no longer exists. If your settings file includes
  194
+``ENABLE_PSYCO``, nothing will break per se, but it just won't do anything.
  195
+
  196
+If you want to use Psyco_ with Django, you'll need to write some custom
  197
+middleware that activates Psyco.
  198
+
  199
+.. _psyco: http://psyco.sourceforge.net/
  200
+
  201
+Thanks
  202
+======
  203
+
  204
+Since 0.95, a number of people have stepped forward and taken a major new role in Django's development. We'd like to thank these
  205
+people for all their hard work:
  206
+
  207
+    * Russell Keith-Magee and Malcolm Tredinnick for their major code
  208
+      contributions. This release wouldn't have been possible without them.
  209
+      
  210
+    * Our new release manager, James Bennett, for his work in getting out
  211
+      0.95.1, 0.96, and (hopefully) future release.
  212
+      
  213
+    * Our ticket managers Chris Beaven (aka SmileyChris), Simon Greenhill,
  214
+      Michael Radziej, and Gary Wilson. They agreed to take on the monumental
  215
+      task of wrangling our tickets into nicely cataloged submission. Figuring
  216
+      out what to work on is now about a million times easier; thanks again,
  217
+      guys.
  218
+            
  219
+    * Everyone who submitted a bug report, patch or ticket comment. We can't
  220
+      possibly thank everyone by name -- over 200 developers submitted patches
  221
+      that went into 0.96 -- but everyone who's contributed to Django is listed
  222
+      in AUTHORS_.
  223
+      
  224
+.. _AUTHORS: http://code.djangoproject.com/browser/django/trunk/AUTHORS

0 notes on commit 2efd343

Please sign in to comment.
Something went wrong with that request. Please try again.