summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/add_ons.txt2
-rw-r--r--docs/api_stability.txt2
-rw-r--r--docs/databases.txt9
-rw-r--r--docs/databrowse.txt56
-rw-r--r--docs/distributions.txt10
-rw-r--r--docs/django-admin.txt9
-rw-r--r--docs/faq.txt2
-rw-r--r--docs/generic_views.txt2
-rw-r--r--docs/install.txt29
-rw-r--r--docs/legacy_databases.txt4
-rw-r--r--docs/model-api.txt32
-rw-r--r--docs/overview.txt2
-rw-r--r--docs/settings.txt6
-rw-r--r--docs/syndication_feeds.txt19
-rw-r--r--docs/templates.txt12
-rw-r--r--docs/templates_python.txt2
-rw-r--r--docs/testing.txt2
-rw-r--r--docs/tutorial01.txt8
-rw-r--r--docs/tutorial02.txt8
-rw-r--r--docs/tutorial03.txt4
-rw-r--r--docs/tutorial04.txt2
21 files changed, 170 insertions, 52 deletions
diff --git a/docs/add_ons.txt b/docs/add_ons.txt
index b92ae0bd17..4f45d99d9a 100644
--- a/docs/add_ons.txt
+++ b/docs/add_ons.txt
@@ -24,7 +24,7 @@ admin
The automatic Django administrative interface. For more information, see
`Tutorial 2`_.
-.. _Tutorial 2: ../tutorial2/
+.. _Tutorial 2: ../tutorial02/
auth
====
diff --git a/docs/api_stability.txt b/docs/api_stability.txt
index 508336e0ef..3fd793b0fd 100644
--- a/docs/api_stability.txt
+++ b/docs/api_stability.txt
@@ -101,7 +101,7 @@ change:
.. _caching: ../cache/
.. _custom template tags and libraries: ../templates_python/
.. _database lookup: ../db_api/
-.. _django-admin utility: ../django_admin/
+.. _django-admin utility: ../django-admin/
.. _fastcgi integration: ../fastcgi/
.. _flatpages: ../flatpages/
.. _generic views: ../generic_views/
diff --git a/docs/databases.txt b/docs/databases.txt
index 3545b58d47..b73f39843c 100644
--- a/docs/databases.txt
+++ b/docs/databases.txt
@@ -69,9 +69,12 @@ For now, InnoDB is probably your best choice.
MySQLdb
-------
-`MySQLdb`_ is the Python interface to MySQL. 1.2.1 is the first version that
-has support for MySQL 4.1 and newer. If you are trying to use an older version
-of MySQL, then 1.2.0 *might* work for you.
+`MySQLdb`_ is the Python interface to MySQL. Version 1.2.1p2 or later is
+required for full MySQL support in Django. Earlier versions will not work with
+the ``mysql`` backend.
+
+If you are trying to use an older version of MySQL and the ``mysql_old``
+backend, then 1.2.0 *might* work for you.
.. _MySQLdb: http://sourceforge.net/projects/mysql-python
diff --git a/docs/databrowse.txt b/docs/databrowse.txt
new file mode 100644
index 0000000000..e9691cc879
--- /dev/null
+++ b/docs/databrowse.txt
@@ -0,0 +1,56 @@
+==========
+Databrowse
+==========
+
+Databrowse is a Django application that lets you browse your data.
+
+As the Django admin dynamically creates an admin interface by introspecting
+your models, Databrowse dynamically creates a rich, browsable Web site by
+introspecting your models.
+
+.. admonition:: Note
+
+ Databrowse is **very** new and is currently under active development. It
+ may change substantially before the next Django release.
+
+ With that said, it's easy to use, and it doesn't require writing any
+ code. So you can play around with it today, with very little investment in
+ time or coding.
+
+How to use Databrowse
+=====================
+
+ 1. Point Django at the default Databrowse templates. There are two ways to
+ do this:
+
+ * Add ``'django.contrib.databrowse'`` to your ``INSTALLED_APPS``
+ setting. This will work if your ``TEMPLATE_LOADERS`` setting includes
+ the ``app_directories`` template loader (which is the case by
+ default). See the `template loader docs`_ for more.
+
+ * Otherwise, determine the full filesystem path to the
+ ``django/contrib/databrowse/templates`` directory, and add that
+ directory to your ``TEMPLATE_DIRS`` setting.
+
+ 2. Register a number of models with the Databrowse site::
+
+ from django.contrib import databrowse
+
+ databrowse.site.register(SomeModel)
+ databrowse.site.register(SomeOtherModel)
+
+ Note that you should register the model *classes*, not instances.
+
+ It doesn't matter where you put this, as long as it gets executed at
+ some point. A good place for it is in your URLconf file (``urls.py``).
+
+ 3. Add the following line to your URLconf::
+
+ (r'^databrowse/(.*)', databrowse.site.root),
+
+ The prefix doesn't matter -- you can use ``databrowse/`` or ``db/`` or
+ whatever you'd like.
+
+ 4. Run the Django server and visit ``/databrowse/`` in your browser.
+
+.. _template loader docs: ../templates_python/#loader-types
diff --git a/docs/distributions.txt b/docs/distributions.txt
index 63206c535e..4ec265f93c 100644
--- a/docs/distributions.txt
+++ b/docs/distributions.txt
@@ -47,16 +47,18 @@ Fedora
------
A Django package is available for `Fedora Linux`_, in the "Fedora Extras"
-repository. The `current Fedora package`_ is based on Django 0.95.1, and can be
-installed by typing ``yum install Django``.
+repository. The `current Fedora package`_ is based on Django 0.96, and can be
+installed by typing ``yum install Django``. The previous link is for the i386
+binary. Users of other architectures should be able to use that as a starting
+point to find their preferred version.
.. _Fedora Linux: http://fedora.redhat.com/
-.. _current Fedora package: http://fedoraproject.org/extras/6/i386/repodata/repoview/Django-0-0.95.1-1.fc6.html
+.. _current Fedora package: http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386/repoview/Django.html
Gentoo
------
-A Django build is available for `Gentoo Linux`_, and is based on Django 0.95.1.
+A Django build is available for `Gentoo Linux`_, and is based on Django 0.96.
The `current Gentoo build`_ can be installed by typing ``emerge django``.
.. _Gentoo Linux: http://www.gentoo.org/
diff --git a/docs/django-admin.txt b/docs/django-admin.txt
index cc23bfb559..cc2eadc365 100644
--- a/docs/django-admin.txt
+++ b/docs/django-admin.txt
@@ -61,7 +61,7 @@ Prints the admin-index template snippet for the given appnames.
Use admin-index template snippets if you want to customize the look and feel of
your admin's index page. See `Tutorial 2`_ for more information.
-.. _Tutorial 2: ../tutorial2/
+.. _Tutorial 2: ../tutorial02/
createcachetable [tablename]
----------------------------
@@ -109,7 +109,8 @@ application(s).
By default, the database will be dumped in JSON format. If you want the output
to be in another format, use the ``--format`` option (e.g., ``format=xml``).
You may specify any Django serialization backend (including any user specified
-serialization backends named in the ``SERIALIZATION_MODULES`` setting).
+serialization backends named in the ``SERIALIZATION_MODULES`` setting). The
+``--indent`` option can be used to pretty-print the output.
If no application name is provided, all installed applications will be dumped.
@@ -220,6 +221,8 @@ one fixture can reference data in another fixture. If the database backend
supports row-level constraints, these constraints will be checked at the
end of the transaction.
+The ``dumpdata`` command can be used to generate input for ``loaddata``.
+
.. admonition:: MySQL and Fixtures
Unfortunately, MySQL isn't capable of completely supporting all the
@@ -329,7 +332,7 @@ sqlall [appname appname ...]
Prints the CREATE TABLE and initial-data SQL statements for the given appnames.
-Refer to the description of ``sqlinitialdata`` for an explanation of how to
+Refer to the description of ``sqlcustom`` for an explanation of how to
specify initial data.
sqlclear [appname appname ...]
diff --git a/docs/faq.txt b/docs/faq.txt
index 202b73c6be..e5a6acb36e 100644
--- a/docs/faq.txt
+++ b/docs/faq.txt
@@ -278,7 +278,7 @@ How do I get started?
.. _`Download the code`: http://www.djangoproject.com/download/
.. _`installation guide`: ../install/
-.. _tutorial: ../tutorial1/
+.. _tutorial: ../tutorial01/
.. _documentation: ../
.. _ask questions: http://www.djangoproject.com/community/
diff --git a/docs/generic_views.txt b/docs/generic_views.txt
index 0496a58691..5f7a669652 100644
--- a/docs/generic_views.txt
+++ b/docs/generic_views.txt
@@ -44,7 +44,7 @@ simple weblog app that drives the blog on djangoproject.com::
(r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/$', 'archive_day', info_dict),
(r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/$', 'archive_month', info_dict),
(r'^(?P<year>\d{4})/$', 'archive_year', info_dict),
- (r'^/?$', 'archive_index', info_dict),
+ (r'^$', 'archive_index', info_dict),
)
As you can see, this URLconf defines a few options in ``info_dict``.
diff --git a/docs/install.txt b/docs/install.txt
index dbbde93f83..4650fd746b 100644
--- a/docs/install.txt
+++ b/docs/install.txt
@@ -58,6 +58,7 @@ installed.
If you're on Windows, check out the unofficial `compiled Windows version`_.
* If you're using MySQL, you'll need MySQLdb_, version 1.2.1p2 or higher.
+ You will also want to read the database-specific notes for the `MySQL backend`_.
* If you're using SQLite, you'll need pysqlite_. Use version 2.0.3 or higher.
@@ -69,6 +70,34 @@ installed.
.. _MySQLdb: http://sourceforge.net/projects/mysql-python
.. _SQLite: http://www.sqlite.org/
.. _pysqlite: http://initd.org/tracker/pysqlite
+.. _MySQL backend: ../databases/
+
+Remove any old versions of Django
+=================================
+
+If you are upgrading your installation of Django from a previous version,
+you will need to uninstall the old Django version before installing the
+new version.
+
+If you installed Django using ``setup.py install``, uninstalling
+is as simple as deleting the ``django`` directory from your Python
+``site-packages``.
+
+If you installed Django from a Python Egg, remove the Django ``.egg` file,
+and remove the reference to the egg in the file named ``easy-install.pth``.
+This file should also be located in your ``site-packages`` directory.
+
+.. admonition:: Where are my ``site-packages`` stored?
+
+ The location of the ``site-packages`` directory depends on the operating
+ system, and the location in which Python was installed. However, the
+ following locations are common:
+
+ * If you're using Linux: ``/usr/lib/python2.X/site-packages``
+
+ * If you're using Windows: ``C:\Python2.X\lib\site-packages``
+
+ * If you're using MacOSX: ``/Library/Python2.X/site-packages``
Install the Django code
=======================
diff --git a/docs/legacy_databases.txt b/docs/legacy_databases.txt
index 3e2753baca..ca3927e52f 100644
--- a/docs/legacy_databases.txt
+++ b/docs/legacy_databases.txt
@@ -9,7 +9,7 @@ utilities to automate as much of this process as possible.
This document assumes you know the Django basics, as covered in the
`official tutorial`_.
-.. _official tutorial: ../tutorial1/
+.. _official tutorial: ../tutorial01/
Give Django your database parameters
====================================
@@ -52,7 +52,7 @@ Once you've cleaned up your models, name the file ``models.py`` and put it in
the Python package that holds your app. Then add the app to your
``INSTALLED_APPS`` setting.
-.. _django-admin.py documentation: ../django_admin/
+.. _django-admin.py documentation: ../django-admin/
Install the core Django tables
==============================
diff --git a/docs/model-api.txt b/docs/model-api.txt
index a03ed09eb2..b71668e37f 100644
--- a/docs/model-api.txt
+++ b/docs/model-api.txt
@@ -21,7 +21,7 @@ A companion to this document is the `official repository of model examples`_.
(In the Django source distribution, these examples are in the
``tests/modeltests`` directory.)
-.. _Database API reference: http://www.djangoproject.com/documentation/db_api/
+.. _Database API reference: ../db-api/
.. _official repository of model examples: http://www.djangoproject.com/documentation/models/
Quick example
@@ -57,7 +57,7 @@ Some technical notes:
syntax, but it's worth noting Django uses SQL tailored to the database
backend specified in your `settings file`_.
-.. _settings file: http://www.djangoproject.com/documentation/settings/
+.. _settings file: ../settings/
Fields
======
@@ -501,7 +501,7 @@ For each model field that has ``choices`` set, Django will add a method to
retrieve the human-readable name for the field's current value. See
`get_FOO_display`_ in the database API documentation.
-.. _get_FOO_display: ../db_api/#get-foo-display
+.. _get_FOO_display: ../db-api/#get-foo-display
Finally, note that choices can be any iterable object -- not necessarily a
list or tuple. This lets you construct choices dynamically. But if you find
@@ -626,7 +626,7 @@ that takes the parameters ``field_data, all_data`` and raises
Django comes with quite a few validators. They're in ``django.core.validators``.
-.. _validator docs: http://www.djangoproject.com/documentation/forms/#validators
+.. _validator docs: ../forms/#validators
Verbose field names
-------------------
@@ -734,10 +734,10 @@ relationship should work. All are optional:
``limit_choices_to`` A dictionary of lookup arguments and values (see
the `Database API reference`_) that limit the
available admin choices for this object. Use this
- with ``models.LazyDate`` to limit choices of objects
- by date. For example::
+ with functions from the Python ``datetime`` module
+ to limit choices of objects by date. For example::
- limit_choices_to = {'pub_date__lte': models.LazyDate()}
+ limit_choices_to = {'pub_date__lte': datetime.now}
only allows the choice of related objects with a
``pub_date`` before the current date/time to be
@@ -792,8 +792,8 @@ relationship should work. All are optional:
the related object.
======================= ============================================================
-.. _`Database API reference`: http://www.djangoproject.com/documentation/db_api/
-.. _related objects documentation: http://www.djangoproject.com/documentation/db_api/#related-objects
+.. _`Database API reference`: ../db-api/
+.. _related objects documentation: ../db-api/#related-objects
Many-to-many relationships
~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -963,7 +963,7 @@ Example::
See the `docs for latest()`_ for more.
-.. _docs for latest(): http://www.djangoproject.com/documentation/db_api/#latest-field-name-none
+.. _docs for latest(): ../db-api/#latest-field-name-none
``order_with_respect_to``
-------------------------
@@ -1397,7 +1397,7 @@ if one of the ``list_display`` fields is a ``ForeignKey``.
For more on ``select_related()``, see `the select_related() docs`_.
-.. _the select_related() docs: http://www.djangoproject.com/documentation/db_api/#select-related
+.. _the select_related() docs: ../db-api/#select-related
``ordering``
------------
@@ -1502,7 +1502,7 @@ The way ``Manager`` classes work is documented in the `Retrieving objects`_
section of the database API docs, but this section specifically touches on
model options that customize ``Manager`` behavior.
-.. _Retrieving objects: http://www.djangoproject.com/documentation/db_api/#retrieving-objects
+.. _Retrieving objects: ../db-api/#retrieving-objects
Manager names
-------------
@@ -1825,7 +1825,7 @@ just the ``where``, ``tables`` and ``params`` arguments to the standard lookup
API. See `Other lookup options`_.
.. _Python DB-API: http://www.python.org/peps/pep-0249.html
-.. _Other lookup options: http://www.djangoproject.com/documentation/db_api/#extra-params-select-where-tables
+.. _Other lookup options: ../db-api/#extra-params-select-where-tables
Overriding default model methods
--------------------------------
@@ -1858,7 +1858,7 @@ You can also prevent saving::
else:
super(Blog, self).save() # Call the "real" save() method.
-.. _database API docs: http://www.djangoproject.com/documentation/db_api/
+.. _database API docs: ../db-api/
Models across files
===================
@@ -1915,7 +1915,7 @@ Each SQL file, if given, is expected to contain valid SQL. The SQL files are
piped directly into the database after all of the models' table-creation
statements have been executed.
-The SQL files are read by the ``sqlinitialdata``, ``sqlreset``, ``sqlall`` and
+The SQL files are read by the ``sqlcustom``, ``sqlreset``, ``sqlall`` and
``reset`` commands in ``manage.py``. Refer to the `manage.py documentation`_
for more information.
@@ -1924,7 +1924,7 @@ order in which they're executed. The only thing you can assume is that, by the
time your custom data files are executed, all the database tables already will
have been created.
-.. _`manage.py documentation`: http://www.djangoproject.com/documentation/django_admin/#sqlinitialdata-appname-appname
+.. _`manage.py documentation`: ../django-admin/#sqlcustom-appname-appname
Database-backend-specific SQL data
----------------------------------
diff --git a/docs/overview.txt b/docs/overview.txt
index 35af75bf05..7b3559663a 100644
--- a/docs/overview.txt
+++ b/docs/overview.txt
@@ -297,5 +297,5 @@ The next obvious steps are for you to `download Django`_, read `the tutorial`_
and join `the community`_. Thanks for your interest!
.. _download Django: http://www.djangoproject.com/download/
-.. _the tutorial: http://www.djangoproject.com/documentation/tutorial1/
+.. _the tutorial: http://www.djangoproject.com/documentation/tutorial01/
.. _the community: http://www.djangoproject.com/community/
diff --git a/docs/settings.txt b/docs/settings.txt
index 63b5cceef9..45bdfa573d 100644
--- a/docs/settings.txt
+++ b/docs/settings.txt
@@ -59,7 +59,7 @@ Use the ``--settings`` command-line argument to specify the settings manually::
django-admin.py runserver --settings=mysite.settings
-.. _django-admin.py: ../django_admin/
+.. _django-admin.py: ../django-admin/
On the server (mod_python)
--------------------------
@@ -102,7 +102,7 @@ between the current settings file and Django's default settings.
For more, see the `diffsettings documentation`_.
-.. _diffsettings documentation: ../django_admin/#diffsettings
+.. _diffsettings documentation: ../django-admin/#diffsettings
Using settings in Python code
=============================
@@ -462,7 +462,7 @@ A tuple of strings designating all applications that are enabled in this Django
installation. Each string should be a full Python path to a Python package that
contains a Django application, as created by `django-admin.py startapp`_.
-.. _django-admin.py startapp: ../django_admin/#startapp-appname
+.. _django-admin.py startapp: ../django-admin/#startapp-appname
INTERNAL_IPS
------------
diff --git a/docs/syndication_feeds.txt b/docs/syndication_feeds.txt
index a64914de3f..2a09307e09 100644
--- a/docs/syndication_feeds.txt
+++ b/docs/syndication_feeds.txt
@@ -114,6 +114,9 @@ Note:
`object-relational mapper`_, ``items()`` doesn't have to return model
instances. Although you get a few bits of functionality "for free" by
using Django models, ``items()`` can return any type of object you want.
+ * If you're creating an Atom feed, rather than an RSS feed, set the
+ ``subtitle`` attribute instead of the ``description`` attribute. See
+ `Publishing Atom and RSS feeds in tandem`_, later, for an example.
One thing's left to do. In an RSS feed, each ``<item>`` has a ``<title>``,
``<link>`` and ``<description>``. We need to tell the framework what data to
@@ -298,7 +301,7 @@ Publishing Atom and RSS feeds in tandem
---------------------------------------
Some developers like to make available both Atom *and* RSS versions of their
-feeds. That's easy to do with Django: Just create a subclass of your ``feed``
+feeds. That's easy to do with Django: Just create a subclass of your ``Feed``
class and set the ``feed_type`` to something different. Then update your
URLconf to add the extra versions.
@@ -318,6 +321,20 @@ Here's a full example::
class AtomSiteNewsFeed(RssSiteNewsFeed):
feed_type = Atom1Feed
+ subtitle = RssSiteNewsFeed.description
+
+.. Note::
+ In this example, the RSS feed uses a ``description`` while the Atom feed
+ uses a ``subtitle``. That's because Atom feeds don't provide for a
+ feed-level "description," but they *do* provide for a "subtitle."
+
+ If you provide a ``description`` in your ``Feed`` class, Django will *not*
+ automatically put that into the ``subtitle`` element, because a subtitle
+ and description are not necessarily the same thing. Instead, you should
+ define a ``subtitle`` attribute.
+
+ In the above example, we simply set the Atom feed's ``subtitle`` to the
+ RSS feed's ``description``, because it's quite short already.
And the accompanying URLconf::
diff --git a/docs/templates.txt b/docs/templates.txt
index d93ee49ac1..2f9f769b96 100644
--- a/docs/templates.txt
+++ b/docs/templates.txt
@@ -702,11 +702,11 @@ Example::
Note that you can backslash-escape a format string if you want to use the
"raw" value. In this example, "f" is backslash-escaped, because otherwise
"f" is a format string that displays the time. The "o" doesn't need to be
-escaped, because it's not a format character.::
+escaped, because it's not a format character::
It is the {% now "jS o\f F" %}
-(Displays "It is the 4th of September" %}
+This would display as "It is the 4th of September".
regroup
~~~~~~~
@@ -1293,3 +1293,11 @@ A collection of template filters that implement these common markup languages:
* Textile
* Markdown
* ReST (ReStructured Text)
+
+django.contrib.webdesign
+------------------------
+
+A collection of template tags that can be useful while designing a website,
+such as a generator of Lorem Ipsum text. See the `webdesign documentation`_.
+
+.. _webdesign documentation: ../webdesign/
diff --git a/docs/templates_python.txt b/docs/templates_python.txt
index 5dd8e4fde0..7cc9acede8 100644
--- a/docs/templates_python.txt
+++ b/docs/templates_python.txt
@@ -1020,7 +1020,7 @@ The ``takes_context`` parameter defaults to ``False``. When it's set to *True*,
the tag is passed the context object, as in this example. That's the only
difference between this case and the previous ``inclusion_tag`` example.
-.. _tutorials: ../tutorial1/#creating-models
+.. _tutorials: ../tutorial01/#creating-models
Setting a variable in the context
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/docs/testing.txt b/docs/testing.txt
index 5b27ae6484..a135734144 100644
--- a/docs/testing.txt
+++ b/docs/testing.txt
@@ -404,7 +404,7 @@ In this example, any JSON fixture called ``mammals``, and any fixture
named ``birds`` will be installed. See the documentation on
`loading fixtures`_ for more details on defining and installing fixtures.
-.. _`loading fixtures`: ../django_admin/#loaddata-fixture-fixture
+.. _`loading fixtures`: ../django-admin/#loaddata-fixture-fixture
This flush/load procedure is repeated for each test in the test case, so you
can be certain that the outcome of a test will not be affected by
diff --git a/docs/tutorial01.txt b/docs/tutorial01.txt
index 0e857d09ca..7657bc7bf7 100644
--- a/docs/tutorial01.txt
+++ b/docs/tutorial01.txt
@@ -124,7 +124,7 @@ It worked!
Full docs for the development server are at `django-admin documentation`_.
-.. _django-admin documentation: ../django_admin/
+.. _django-admin documentation: ../django-admin/
Database setup
--------------
@@ -382,7 +382,7 @@ If you're interested, also run the following commands:
statements for this app.
* ``python manage.py sqlall polls`` -- A combination of all the SQL from
- the 'sql', 'sqlinitialdata', and 'sqlindexes' commands.
+ the 'sql', 'sqlcustom', and 'sqlindexes' commands.
Looking at the output of those commands can help you understand what's actually
happening under the hood.
@@ -400,7 +400,7 @@ as you like, and it will only ever create the tables that don't exist.
Read the `django-admin.py documentation`_ for full information on what the
``manage.py`` utility can do.
-.. _django-admin.py documentation: ../django_admin/
+.. _django-admin.py documentation: ../django-admin/
Playing with the API
====================
@@ -578,4 +578,4 @@ When you're comfortable with the API, read `part 2 of this tutorial`_ to get
Django's automatic admin working.
.. _Database API reference: ../db_api/
-.. _part 2 of this tutorial: ../tutorial2/
+.. _part 2 of this tutorial: ../tutorial02/
diff --git a/docs/tutorial02.txt b/docs/tutorial02.txt
index 2eabae96f0..6e4b0ea35e 100644
--- a/docs/tutorial02.txt
+++ b/docs/tutorial02.txt
@@ -5,7 +5,7 @@ Writing your first Django app, part 2
This tutorial begins where `Tutorial 1`_ left off. We're continuing the Web-poll
application and will focus on Django's automatically-generated admin site.
-.. _Tutorial 1: ../tutorial1/
+.. _Tutorial 1: ../tutorial01/
.. admonition:: Philosophy
@@ -61,8 +61,8 @@ tutorial, remember?) You should see the Django admin index page:
:alt: Django admin index page
:target: http://media.djangoproject.com/img/doc/tutorial/admin02.png
-By default, you should see two types of editable content: groups and users.
-These are core features Django ships with by default.
+You should see a few other types of editable content, including groups, users
+and sites. These are core features Django ships with by default.
.. _"I can't log in" questions: ../faq/#the-admin-site
@@ -434,4 +434,4 @@ When you're comfortable with the admin site, read `part 3 of this tutorial`_ to
start working on public poll views.
.. _Django admin CSS guide: ../admin_css/
-.. _part 3 of this tutorial: ../tutorial3/
+.. _part 3 of this tutorial: ../tutorial03/
diff --git a/docs/tutorial03.txt b/docs/tutorial03.txt
index 17b6ec0c68..8bb63791aa 100644
--- a/docs/tutorial03.txt
+++ b/docs/tutorial03.txt
@@ -5,7 +5,7 @@ Writing your first Django app, part 3
This tutorial begins where `Tutorial 2`_ left off. We're continuing the Web-poll
application and will focus on creating the public interface -- "views."
-.. _Tutorial 2: ../tutorial2/
+.. _Tutorial 2: ../tutorial02/
Philosophy
==========
@@ -463,4 +463,4 @@ All the poll app cares about is its relative URLs, not its absolute URLs.
When you're comfortable with writing views, read `part 4 of this tutorial`_ to
learn about simple form processing and generic views.
-.. _part 4 of this tutorial: ../tutorial4/
+.. _part 4 of this tutorial: ../tutorial04/
diff --git a/docs/tutorial04.txt b/docs/tutorial04.txt
index b1c8c7d4fc..e3d5d4dfc5 100644
--- a/docs/tutorial04.txt
+++ b/docs/tutorial04.txt
@@ -256,4 +256,4 @@ installments:
* Advanced admin features: Permissions
* Advanced admin features: Custom JavaScript
-.. _Tutorial 3: ../tutorial3/
+.. _Tutorial 3: ../tutorial03/