summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/add_ons.txt20
-rw-r--r--docs/django-admin.txt36
-rw-r--r--docs/generic_views.txt7
-rw-r--r--docs/install.txt16
-rw-r--r--docs/middleware.txt2
-rw-r--r--docs/model-api.txt11
-rw-r--r--docs/newforms.txt17
-rw-r--r--docs/release_notes_0.96.txt264
-rw-r--r--docs/request_response.txt1
-rw-r--r--docs/serialization.txt3
-rw-r--r--docs/sessions.txt2
-rw-r--r--docs/settings.txt11
-rw-r--r--docs/templates.txt18
-rw-r--r--docs/testing.txt8
-rw-r--r--docs/url_dispatch.txt4
15 files changed, 315 insertions, 105 deletions
diff --git a/docs/add_ons.txt b/docs/add_ons.txt
index 1756fe5720..9809cf46f8 100644
--- a/docs/add_ons.txt
+++ b/docs/add_ons.txt
@@ -1,6 +1,6 @@
-=====================
-The "contrib" add-ons
-=====================
+============================
+The "django.contrib" add-ons
+============================
Django aims to follow Python's `"batteries included" philosophy`_. It ships
with a variety of extra, optional tools that solve common Web-development
@@ -51,8 +51,6 @@ See the `csrf documentation`_.
formtools
=========
-**New in Django development version**
-
A set of high-level abstractions for Django forms (django.newforms).
django.contrib.formtools.preview
@@ -142,8 +140,6 @@ See the `flatpages documentation`_.
localflavor
===========
-**New in Django development version**
-
A collection of various Django snippets that are useful only for a particular
country or culture. For example, ``django.contrib.localflavor.usa.forms``
contains a ``USZipCodeField`` that you can use to validate U.S. zip codes.
@@ -153,12 +149,16 @@ markup
A collection of template filters that implement these common markup languages:
- * Textile
- * Markdown
- * ReST (ReStructured Text)
+ * `Textile`_
+ * `Markdown`_
+ * `ReST (ReStructured Text)`_
For documentation, read the source code in django/contrib/markup/templatetags/markup.py.
+.. _Textile: http://en.wikipedia.org/wiki/Textile_%28markup_language%29
+.. _Markdown: http://en.wikipedia.org/wiki/Markdown
+.. _ReST (ReStructured Text): http://en.wikipedia.org/wiki/ReStructuredText
+
redirects
=========
diff --git a/docs/django-admin.txt b/docs/django-admin.txt
index ef1d73cdbd..b6028dc2a0 100644
--- a/docs/django-admin.txt
+++ b/docs/django-admin.txt
@@ -100,8 +100,6 @@ if you're ever curious to see the full list of defaults.
dumpdata [appname appname ...]
------------------------------
-**New in Django development version**
-
Output to standard output all data in the database associated with the named
application(s).
@@ -117,8 +115,6 @@ The output of ``dumpdata`` can be used as input for ``loaddata``.
flush
-----
-**New in Django development version**
-
Return the database to the state it was in immediately after syncdb was
executed. This means that all data will be removed from the database, any
post-synchronization handlers will be re-executed, and the ``initial_data``
@@ -165,18 +161,9 @@ needed.
``inspectdb`` works with PostgreSQL, MySQL and SQLite. Foreign-key detection
only works in PostgreSQL and with certain types of MySQL tables.
-install [appname appname ...]
------------------------------
-
-**Removed in Django development version**
-
-Executes the equivalent of ``sqlall`` for the given appnames.
-
loaddata [fixture fixture ...]
------------------------------
-**New in Django development version**
-
Searches for and loads the contents of the named fixture into the database.
A *Fixture* is a collection of files that contain the serialized contents of
@@ -350,14 +337,12 @@ Prints the DROP TABLE SQL statements for the given appnames.
sqlcustom [appname appname ...]
-------------------------------
-**New in Django development version**
-
Prints the custom SQL statements for the given appnames.
For each model in each specified app, this command looks for the file
``<appname>/sql/<modelname>.sql``, where ``<appname>`` is the given appname and
``<modelname>`` is the model's name in lowercase. For example, if you have an
-app ``news`` that includes a ``Story`` model, ``sqlinitialdata`` will attempt
+app ``news`` that includes a ``Story`` model, ``sqlcustom`` will attempt
to read a file ``news/sql/story.sql`` and append it to the output of this
command.
@@ -373,13 +358,6 @@ sqlindexes [appname appname ...]
Prints the CREATE INDEX SQL statements for the given appnames.
-sqlinitialdata [appname appname ...]
---------------------------------------------
-
-**Removed in Django development version**
-
-This method has been renamed ``sqlcustom`` in the development version of Django.
-
sqlreset [appname appname ...]
--------------------------------------
@@ -426,8 +404,6 @@ fixture data files.
test
----
-**New in Django development version**
-
Discover and run tests for all installed models. See `Testing Django applications`_ for more information.
.. _testing django applications: ../testing/
@@ -475,8 +451,6 @@ setting the Python path for you.
--format
--------
-**New in Django development version**
-
Example usage::
django-admin.py dumpdata --format=xml
@@ -493,8 +467,6 @@ options.
--indent
--------
-**New in Django development version**
-
Example usage::
django-admin.py dumpdata --indent=4
@@ -506,8 +478,6 @@ Pretty-printing will only be enabled if the indent option is provided.
--noinput
---------
-**New in Django development version**
-
Inform django-admin that the user should NOT be prompted for any input. Useful
if the django-admin script will be executed as an unattended, automated
script.
@@ -530,8 +500,6 @@ Example output::
--verbosity
-----------
-**New in Django development version**
-
Example usage::
django-admin.py syncdb --verbosity=2
@@ -543,8 +511,6 @@ and `2` is verbose output.
--adminmedia
------------
-**New in Django development version**
-
Example usage::
django-admin.py manage.py --adminmedia=/tmp/new-admin-style/
diff --git a/docs/generic_views.txt b/docs/generic_views.txt
index a136c72a07..7659a428c5 100644
--- a/docs/generic_views.txt
+++ b/docs/generic_views.txt
@@ -97,8 +97,7 @@ which is a dictionary of the parameters captured in the URL.
* ``extra_context``: A dictionary of values to add to the template
context. By default, this is an empty dictionary. If a value in the
dictionary is callable, the generic view will call it
- just before rendering the template. (**This is new in the
- Django development version.**)
+ just before rendering the template.
**Example:**
@@ -752,10 +751,10 @@ If the results are paginated, the context will contain these extra variables:
* ``previous``: The previous page number, as an integer. This is 1-based.
- * `last_on_page`: **New in Django development version** The number of the
+ * `last_on_page`: The number of the
last result on the current page. This is 1-based.
- * `first_on_page`: **New in Django development version** The number of the
+ * `first_on_page`: The number of the
first result on the current page. This is 1-based.
* ``pages``: The total number of pages, as an integer.
diff --git a/docs/install.txt b/docs/install.txt
index 3eede02af0..dbbde93f83 100644
--- a/docs/install.txt
+++ b/docs/install.txt
@@ -86,25 +86,17 @@ Installing the official version
Distribution-provided packages will typically allow for automatic
installation of dependancies and easy upgrade paths.
- 2. Download Django-0.95.tar.gz from our `download page`_.
+ 2. Download the latest release from our `download page`_.
- 3. ``tar xzvf Django-0.95.tar.gz``
+ 3. Untar the downloaded file (e.g. ``tar xzvf Django-NNN.tar.gz``).
- 4. ``cd Django-0.95``
+ 4. Change into the downloaded directory (e.g. ``cd Django-NNN``).
- 5. ``sudo python setup.py install``
-
-Note that the last command will automatically download and install setuptools_
-if you don't already have it installed. This requires a working Internet
-connection and may cause problems on Python 2.5. If you run into problems,
-try using our development version by following the instructions below. The
-development version no longer uses setuptools nor requires an Internet
-connection.
+ 5. Run ``sudo python setup.py install``.
The command will install Django in your Python installation's ``site-packages``
directory.
-.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools
.. _distribution specific notes: ../distributions/
Installing the development version
diff --git a/docs/middleware.txt b/docs/middleware.txt
index 7635442a5c..0d533443d3 100644
--- a/docs/middleware.txt
+++ b/docs/middleware.txt
@@ -104,8 +104,6 @@ Also removes the content from any response to a HEAD request and sets the
django.middleware.http.SetRemoteAddrFromForwardedFor
----------------------------------------------------
-**New in Django development version**
-
Sets ``request.META['REMOTE_ADDR']`` based on
``request.META['HTTP_X_FORWARDED_FOR']``, if the latter is set. This is useful
if you're sitting behind a reverse proxy that causes each request's
diff --git a/docs/model-api.txt b/docs/model-api.txt
index 26686b02fe..155ef63271 100644
--- a/docs/model-api.txt
+++ b/docs/model-api.txt
@@ -362,9 +362,8 @@ Like a ``PositiveIntegerField``, but only allows values under a certain
containing only letters, numbers, underscores or hyphens. They're generally
used in URLs.
-In the Django development version, you can specify ``maxlength``. If
-``maxlength`` is not specified, Django will use a default length of 50. In
-previous Django versions, there's no way to override the length of 50.
+Like a CharField, you can specify ``maxlength``. If ``maxlength`` is
+not specified, Django will use a default length of 50.
Implies ``db_index=True``.
@@ -1457,8 +1456,8 @@ user searches for ``john lennon``, Django will do the equivalent of this SQL
WHERE (first_name ILIKE '%john%' OR last_name ILIKE '%john%')
AND (first_name ILIKE '%lennon%' OR last_name ILIKE '%lennon%')
-**New in Django development version:** For faster and/or more restrictive
-searches, prefix the field name with an operator:
+For faster and/or more restrictive searches, prefix the field name
+with an operator:
``^``
Matches the beginning of the field. For example, if ``search_fields`` is
@@ -1754,8 +1753,6 @@ But this template code is good::
The ``permalink`` decorator
~~~~~~~~~~~~~~~~~~~~~~~~~~~
-**New in Django development version.**
-
The problem with the way we wrote ``get_absolute_url()`` above is that it
slightly violates the DRY principle: the URL for this object is defined both
in the URLConf file and in the model.
diff --git a/docs/newforms.txt b/docs/newforms.txt
index 33aaf14357..ddb850f54c 100644
--- a/docs/newforms.txt
+++ b/docs/newforms.txt
@@ -9,9 +9,10 @@ framework. This document explains how to use this new library.
Migration plan
==============
-``django.newforms`` currently is only available in the Django development version
--- i.e., it's not available in the Django 0.95 release. For the next Django
-release, our plan is to do the following:
+``django.newforms`` currently is only available in Django beginning
+with the 0.96 release. the Django development version -- i.e., it's
+not available in the Django 0.95 release. For the next Django release,
+our plan is to do the following:
* As of revision [4208], we've copied the current ``django.forms`` to
``django.oldforms``. This allows you to upgrade your code *now* rather
@@ -859,6 +860,16 @@ level and at the form instance level, and the latter gets precedence::
<tr><th>Url:</th><td><input type="text" name="url" /></td></tr>
<tr><th>Comment:</th><td><input type="text" name="comment" /></td></tr>
+Creating custom fields
+----------------------
+
+If the built-in ``Field`` classes don't meet your needs, you can easily create
+custom ``Field`` classes. To do this, just create a subclass of
+``django.newforms.Field``. Its only requirements are that it implement a
+``clean()`` method and that its ``__init__()`` method accept the core arguments
+mentioned above (``required``, ``label``, ``initial``, ``widget``,
+``help_text``).
+
More coming soon
================
diff --git a/docs/release_notes_0.96.txt b/docs/release_notes_0.96.txt
new file mode 100644
index 0000000000..ca5f5e045c
--- /dev/null
+++ b/docs/release_notes_0.96.txt
@@ -0,0 +1,264 @@
+=================================
+Django version 0.96 release notes
+=================================
+
+Welcome to Django 0.96!
+
+The primary goal for 0.96 is a cleanup and stabilization of the features
+introduced in 0.95. There have been a few small `backwards-incompatible
+changes`_ since 0.95, but the upgrade process should be fairly simple
+and should not require major changes to existing applications.
+
+However, we're also releasing 0.96 now because we have a set of
+backwards-incompatible changes scheduled for the near future. Once
+completed, they will involve some code changes for application
+developers, so we recommend that you stick with Django 0.96 until the
+next official release; then you'll be able to upgrade in one step
+instead of needing to make incremental changes to keep up with the
+development version of Django.
+
+Backwards-incompatible changes
+==============================
+
+The following changes may require you to update your code when you switch from
+0.95 to 0.96:
+
+``MySQLdb`` version requirement
+-------------------------------
+
+Due to a bug in older versions of the ``MySQLdb`` Python module (which
+Django uses to connect to MySQL databases), Django's MySQL backend now
+requires version 1.2.1p2 or higher of `MySQLdb`, and will raise
+exceptions if you attempt to use an older version.
+
+If you're currently unable to upgrade your copy of ``MySQLdb`` to meet
+this requirement, a separate, backwards-compatible backend, called
+"mysql_old", has been added to Django. To use this backend, change
+the ``DATABASE_ENGINE`` setting in your Django settings file from
+this::
+
+ DATABASE_ENGINE = "mysql"
+
+to this::
+
+ DATABASE_ENGINE = "mysql_old"
+
+However, we strongly encourage MySQL users to upgrade to a more recent
+version of `MySQLdb` as soon as possible, The "mysql_old" backend is
+provided only to ease this transition, and is considered deprecated;
+aside from any necessary security fixes, it will not be actively
+maintained, and it will be removed in a future release of Django.
+
+Also, note that some features, like the new ``DATABASE_OPTIONS``
+setting (see the `databases documentation`_ for details), are only
+available on the "mysql" backend, and will not be made available for
+"mysql_old".
+
+.. _databases documentation: ../databases/
+
+Database constraint names changed
+---------------------------------
+
+The format of the constraint names Django generates for foreign key
+references have changed slightly. These names are generally only used
+when it is not possible to put the reference directly on the affected
+column, so they is not always visible.
+
+The effect of this change is that running ``manage.py reset`` and
+similar commands against an existing database may generate SQL with
+the new form of constraint name, while the database itself contains
+constraints named in the old form; this will cause the database server
+to raise an error message about modifying non-existent constraints.
+
+If you need to work around this, there are two methods available:
+
+ 1. Redirect the output of ``manage.py`` to a file, and edit the
+ generated SQL to use the correct constraint names before
+ executing it.
+
+ 2. Examine the output of ``manage.py sqlall`` to see the new-style
+ constraint names, and use that as a guide to rename existing
+ constraints in your database.
+
+Name changes in ``manage.py``
+-----------------------------
+
+A few of the options to ``manage.py`` have changed with the addition of fixture
+support:
+
+ * There are new ``dumpdata`` and ``loaddata`` commands which, as
+ you might expect, will dump and load data to/from the
+ database. These commands can operate against any of Django's
+ supported serialization formats.
+
+ * The ``sqlinitialdata`` command has been renamed to ``sqlcustom`` to
+ emphasize that ``loaddata`` should be used for data (and ``sqlcustom`` for
+ other custom SQL -- views, stored procedures, etc.).
+
+ * The vestigial ``install`` command has been removed. Use ``syncdb``.
+
+Backslash escaping changed
+--------------------------
+
+The Django database API now escapes backslashes given as query parameters. If
+you have any database API code that matches backslashes, and it was working before
+(despite the lack of escaping), you'll have to change your code to "unescape" the
+slashes one level.
+
+For example, this used to work::
+
+ # Find text containing a single backslash
+ MyModel.objects.filter(text__contains='\\\\')
+
+The above is now incorrect, and should be rewritten as::
+
+ # Find text containing a single backslash
+ MyModel.objects.filter(text__contains='\\')
+
+Removed ENABLE_PSYCO setting
+----------------------------
+
+The ``ENABLE_PSYCO`` setting no longer exists. If your settings file includes
+``ENABLE_PSYCO`` it will have no effect; to use Psyco_, we recommend
+writing a middleware class to activate it.
+
+.. _psyco: http://psyco.sourceforge.net/
+
+What's new in 0.96?
+===================
+
+This revision represents over a thousand source commits and over four hundred
+bug fixes, so we can't possibly catalog all the changes. Here, we describe the
+most notable changes in this release.
+
+New forms library
+-----------------
+
+``django.newforms`` is Django's new form-handling library. It's a
+replacement for ``django.forms``, the old form/manipulator/validation
+framework. Both APIs are available in 0.96, but over the next two
+releases we plan to switch completely to the new forms system, and
+deprecate and remove the old system.
+
+There are three elements to this transition:
+
+ * We've copied the current ``django.forms`` to
+ ``django.oldforms``. This allows you to upgrade your code *now*
+ rather than waiting for the backwards-incompatible change and
+ rushing to fix your code after the fact. Just change your
+ import statements like this::
+
+ from django import forms # 0.95-style
+ from django import oldforms as forms # 0.96-style
+
+ * The next official release of Django will move the current
+ ``django.newforms`` to ``django.forms``. This will be a
+ backwards-incompatible change, and anyone still using the old
+ version of ``django.forms`` at that time will need to change
+ their import statements as described above.
+
+ * The next release after that will completely remove
+ ``django.oldforms``.
+
+Although the ``newforms`` library will continue to evolve, it's ready for use
+for most common cases. We recommend that anyone new to form handling skip the
+old forms system and start with the new.
+
+For more information about ``django.newforms``, read the `newforms
+documentation`_.
+
+.. _newforms documentation: ../newforms/
+
+URLconf improvements
+--------------------
+
+You can now use any callable as the callback in URLconfs (previously, only
+strings that referred to callables were allowed). This allows a much more
+natural use of URLconfs. For example, this URLconf::
+
+ from django.conf.urls.defaults import *
+
+ urlpatterns = patterns('',
+ ('^myview/$', 'mysite.myapp.views.myview')
+ )
+
+can now be rewritten as::
+
+ from django.conf.urls.defaults import *
+ from mysite.myapp.views import myview
+
+ urlpatterns = patterns('',
+ ('^myview/$', myview)
+ )
+
+One useful application of this can be seen when using decorators; this
+change allows you to apply decorators to views *in your
+URLconf*. Thus, you can make a generic view require login very
+easily::
+
+ from django.conf.urls.defaults import *
+ from django.contrib.auth.decorators import login_required
+ from django.views.generic.list_detail import object_list
+ from mysite.myapp.models import MyModel
+
+ info = {
+ "queryset" : MyModel.objects.all(),
+ }
+
+ urlpatterns = patterns('',
+ ('^myview/$', login_required(object_list), info)
+ )
+
+Note that both syntaxes (strings and callables) are valid, and will continue to
+be valid for the foreseeable future.
+
+The test framework
+------------------
+
+Django now includes a test framework so you can start transmuting fear into
+boredom (with apologies to Kent Beck). You can write tests based on doctest_
+or unittest_ and test your views with a simple test client.
+
+There is also new support for "fixtures" -- initial data, stored in any of the
+supported `serialization formats`_, that will be loaded into your database at the
+start of your tests. This makes testing with real data much easier.
+
+See `the testing documentation`_ for the full details.
+
+.. _doctest: http://docs.python.org/lib/module-doctest.html
+.. _unittest: http://docs.python.org/lib/module-unittest.html
+.. _the testing documentation: ../testing/
+.. _serialization formats: ../serialization/
+
+Improvements to the admin interface
+-----------------------------------
+
+A small change, but a very nice one: dedicated views for adding and
+updating users have been added to the admin interface, so you no
+longer need to worry about working with hashed passwords in the admin.
+
+Thanks
+======
+
+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 people for
+all their hard work:
+
+ * Russell Keith-Magee and Malcolm Tredinnick for their major code
+ contributions. This release wouldn't have been possible without them.
+
+ * Our new release manager, James Bennett, for his work in getting out
+ 0.95.1, 0.96, and (hopefully) future release.
+
+ * Our ticket managers Chris Beaven (aka SmileyChris), Simon Greenhill,
+ Michael Radziej, and Gary Wilson. They agreed to take on the monumental
+ task of wrangling our tickets into nicely cataloged submission. Figuring
+ out what to work on is now about a million times easier; thanks again,
+ guys.
+
+ * Everyone who submitted a bug report, patch or ticket comment. We can't
+ possibly thank everyone by name -- over 200 developers submitted patches
+ that went into 0.96 -- but everyone who's contributed to Django is listed
+ in AUTHORS_.
+
+.. _AUTHORS: http://code.djangoproject.com/browser/django/trunk/AUTHORS \ No newline at end of file
diff --git a/docs/request_response.txt b/docs/request_response.txt
index 6dfe78a686..2b79903d13 100644
--- a/docs/request_response.txt
+++ b/docs/request_response.txt
@@ -384,7 +384,6 @@ Methods
Deletes the cookie with the given key. Fails silently if the key doesn't
exist.
- The ``path`` and ``domain`` arguments are new in the Django development version.
Due to the way cookies work, ``path`` and ``domain`` should be the same
values you used in ``set_cookie()`` -- otherwise the cookie may not be deleted.
diff --git a/docs/serialization.txt b/docs/serialization.txt
index aee1b9a3bb..48ab46f0f9 100644
--- a/docs/serialization.txt
+++ b/docs/serialization.txt
@@ -31,7 +31,8 @@ but it'll almost always be a QuerySet).
You can also use a serializer object directly::
- xml_serializer = serializers.get_serializer("xml")
+ XMLSerializer = serializers.get_serializer("xml")
+ xml_serializer = XMLSerializer()
xml_serializer.serialize(queryset)
data = xml_serializer.getvalue()
diff --git a/docs/sessions.txt b/docs/sessions.txt
index 8c54c1634a..660718b4e2 100644
--- a/docs/sessions.txt
+++ b/docs/sessions.txt
@@ -265,8 +265,6 @@ The name of the cookie to use for sessions. This can be whatever you want.
SESSION_COOKIE_SECURE
---------------------
-**New in Django development version**
-
Default: ``False``
Whether to use a secure cookie for the session cookie. If this is set to
diff --git a/docs/settings.txt b/docs/settings.txt
index b41281ee49..63b5cceef9 100644
--- a/docs/settings.txt
+++ b/docs/settings.txt
@@ -245,7 +245,8 @@ DATABASE_ENGINE
Default: ``''`` (Empty string)
Which database backend to use. Either ``'postgresql_psycopg2'``,
-``'postgresql'``, ``'mysql'``, ``'sqlite3'`` or ``'ado_mssql'``.
+``'postgresql'``, ``'mysql'``, ``'mysql_old'``, ``'sqlite3'`` or
+``'ado_mssql'``.
DATABASE_HOST
-------------
@@ -428,8 +429,6 @@ trailing space.
FIXTURE_DIRS
-------------
-**New in Django development version**
-
Default: ``()`` (Empty tuple)
List of locations of the fixture data files, in search order. Note that
@@ -715,8 +714,6 @@ See the `session docs`_.
SESSION_COOKIE_SECURE
---------------------
-**New in Django development version**
-
Default: ``False``
Whether to use a secure cookie for the session cookie. If this is set to
@@ -811,8 +808,6 @@ misspelled) variables. See `How invalid variables are handled`_.
TEST_RUNNER
-----------
-**New in Django development version**
-
Default: ``'django.test.simple.run_tests'``
The name of the method to use for starting the test suite. See
@@ -823,8 +818,6 @@ The name of the method to use for starting the test suite. See
TEST_DATABASE_NAME
------------------
-**New in Django development version**
-
Default: ``None``
The name of database to use when running the test suite. If a value of
diff --git a/docs/templates.txt b/docs/templates.txt
index d53270ac16..db748ae432 100644
--- a/docs/templates.txt
+++ b/docs/templates.txt
@@ -112,8 +112,6 @@ know how to write Python code.
Comments
========
-**New in Django development version**
-
To comment-out part of a template, use the comment syntax: ``{# #}``.
For example, this template would render as ``'hello'``::
@@ -253,8 +251,8 @@ Here are some tips for working with inheritance:
if you want to add to the contents of a parent block instead of
completely overriding it.
- * **New in Django development version:** For extra readability, you can
- optionally give a *name* to your ``{% endblock %}`` tag. For example::
+ * For extra readability, you can optionally give a *name* to your
+ ``{% endblock %}`` tag. For example::
{% block content %}
...
@@ -548,9 +546,9 @@ The 'ifchanged' block tag is used within a loop. It has two possible uses.
<a href="{{ date|date:"M/d"|lower }}/">{{ date|date:"j" }}</a>
{% endfor %}
-2. **New in Django development version.** If given a variable, check whether that
- variable has changed. For example, the following shows the date every time it
- changes, but only shows the hour if both the hour and the date has changed::
+2. If given a variable, check whether that variable has changed. For
+ example, the following shows the date every time it changes, but
+ only shows the hour if both the hour and the date has changed::
{% for date in days %}
{% ifchanged date.date %} {{ date.date }} {% endifchanged %}
@@ -828,13 +826,9 @@ The argument tells which template bit to output:
``closecomment`` ``#}``
================== =======
-Note: ``opencomment`` and ``closecomment`` are new in the Django development version.
-
url
~~~
-**New in Django development version**
-
**Note that the syntax for this tag may change in the future, as we make it more robust.**
Returns an absolute URL (i.e., a URL without the domain name) matching a given
@@ -976,8 +970,6 @@ place -- but only if there's a decimal part to be displayed. For example:
* ``36.15`` gets converted to ``36.2``
* ``36`` gets converted to ``36``
-**New in Django development version**
-
If used with a numeric integer argument, ``floatformat`` rounds a number to that
many decimal places. For example:
diff --git a/docs/testing.txt b/docs/testing.txt
index f7fd402502..31cea791d3 100644
--- a/docs/testing.txt
+++ b/docs/testing.txt
@@ -2,8 +2,6 @@
Testing Django applications
===========================
-**New in Django development version**.
-
Automated testing is an extremely useful weapon in the bug-killing arsenal
of the modern developer. When initially writing code, a test suite can be
used to validate that code behaves as expected. When refactoring or
@@ -227,6 +225,12 @@ can be invoked on the ``Client`` instance.
The key-value pairs in the data dictionary will be encoded as a multipart
message and used to create the POST data payload.
+ To submit multiple values for a given key (for example, to specify
+ the selections for a multiple selection list), provide the values as a
+ list or tuple for the required key. For example, a data dictionary of
+ ``{'choices': ('a','b','d')}`` would submit three selected rows for the
+ field named ``choices``.
+
Submitting files is a special case. To POST a file, you need only
provide the file field name as a key, and a file handle to the file you wish to
upload as a value. The Test Client will populate the two POST fields (i.e.,
diff --git a/docs/url_dispatch.txt b/docs/url_dispatch.txt
index 3f51ce4b91..85c87de680 100644
--- a/docs/url_dispatch.txt
+++ b/docs/url_dispatch.txt
@@ -400,8 +400,6 @@ to pass metadata and options to views.
Passing extra options to ``include()``
--------------------------------------
-**New in Django development version.**
-
Similarly, you can pass extra options to ``include()``. When you pass extra
options to ``include()``, *each* line in the included URLconf will be passed
the extra options.
@@ -442,8 +440,6 @@ every view in the the included URLconf accepts the extra options you're passing.
Passing callable objects instead of strings
===========================================
-**New in Django development version.**
-
Some developers find it more natural to pass the actual Python function object
rather than a string containing the path to its module. This alternative is
supported -- you can pass any callable object as the view.