Author: russellm
Date: 2009-04-16 07:47:34 -0500 (Thu, 16 Apr 2009)
New Revision: 10565

Modified:
   django/trunk/docs/ref/contrib/admin/index.txt
Log:
Fixed #10726 -- Added documentation on AdminSite urls. Thanks to Alex Gaynor 
for the initial draft.

Modified: django/trunk/docs/ref/contrib/admin/index.txt
===================================================================
--- django/trunk/docs/ref/contrib/admin/index.txt       2009-04-16 12:46:58 UTC 
(rev 10564)
+++ django/trunk/docs/ref/contrib/admin/index.txt       2009-04-16 12:47:34 UTC 
(rev 10565)
@@ -1137,40 +1137,11 @@
 your own ``AdminSite`` instance (see below), and changing the 
``index_template``
 or ``login_template`` properties.
 
-Linking to admin views
-======================
-
-.. versionadded:: 1.1
-
-All the admin views use :ref:`named URL patterns <naming-url-patterns>` so it's
-easy to link to admin views with ``urlresolvers.reverse`` or the :ttag:`url`
-template tag.
-
-Each model gets its own set of views and its own name using the model's app 
name
-and model name. For example, the "add" view for a ``Choice`` model in a
-``polls`` app would be named ``"admin_polls_choice_add"``.
-
-All the available views and their names are:
-
-    ==============  ======================================  ===================
-    View            View name                               Parameters
-    ==============  ======================================  ===================
-    Change list     ``"admin_<app>_<model>_changelist"``    None
-    Add object      ``"admin_<app>_<model>_add"``           None
-    Change object   ``"admin_<app>_<model>_change"``        ``object_id``
-    Delete object   ``"admin_<app>_<model>_delete"``        ``object_id``
-    Object history  ``"admin_<app>_<model>_history"``       ``object_id``
-    ==============  ======================================  ===================
-
-For example, to get the change URL for a particular ``Choice`` object::
-
-    >>> from django.core import urlresolvers
-    >>> c = Choice.objects.get(...)
-    >>> change_url = urlresolvers.reverse('admin_polls_choice_change', (c.id,))
-
 ``AdminSite`` objects
 =====================
 
+.. class:: AdminSite
+
 A Django administrative site is represented by an instance of
 ``django.contrib.admin.sites.AdminSite``; by default, an instance of
 this class is created as ``django.contrib.admin.site`` and you can
@@ -1246,14 +1217,82 @@
         ('^advanced-admin/', include(advanced_site.urls)),
     )
 
+``AdminSite`` instances take a single argument to their constructor, their
+name, which can be anything you like. This argument becomes the prefix to the
+URL names for the purposes of :ref:`reversing them<admin-reverse-urls>`. This
+is only necessary if you are using more than one ``AdminSite``.
+
 Adding views to admin sites
 ---------------------------
 
 .. versionadded:: 1.1
 
-Just like ``ModelAdmin``, ``AdminSite`` provides a
+Just like :class:`ModelAdmin`, :class:`AdminSite` provides a
 :meth:`~django.contrib.admin.ModelAdmin.get_urls()` method
 that can be overridden to define additional views for the site. To add
 a new view to your admin site, extend the base
 :meth:`~django.contrib.admin.ModelAdmin.get_urls()` method to include
 a pattern for your new view.
+
+.. note::
+    Any view you render that uses the admin templates, or extends the base
+    admin template, should include in it's context a variable named
+    ``admin_site`` that contains the name of the :class:`AdminSite` instance. 
For
+    :class:`AdminSite` instances, this means ``self.name``; for 
:class:`ModelAdmin`
+    instances, this means ``self.admin_site.name``.
+
+.. _admin-reverse-urls:
+
+Reversing Admin URLs
+====================
+
+.. versionadded:: 1.1
+
+When an :class:`AdminSite` is deployed, the views provided by that site are
+accessible using Django's :ref:`URL reversing system <naming-url-patterns>`.
+
+The :class:`AdminSite` provides the following named URL patterns:
+
+    ======================  =============================== =============
+    Page                    URL name                        Parameters
+    ======================  =============================== =============
+    Index                   ``admin_index``
+    Logout                  ``admin_logout``
+    Password change         ``admin_password_change``
+    Password change done    ``admin_password_change_done``
+    i18n javascript         ``admin_jsi18n``
+    Application index page  ``admin_app_list``              ``app_label``
+    ======================  =============================== =============
+
+These names will be prefixed with the name of the :class:`AdminSite` instance,
+plus an underscore. For example, if your :class:`AdminSite` was named
+``custom``, then the Logout view would be served using a URL with the name
+``custom_admin_logout``. The default :class:`AdminSite` doesn't use a prefix
+in it's URL names.
+
+Each :class:`ModelAdmin` instance provides an additional set of named URLs:
+
+    ======================  
=====================================================   =============
+    Page                    URL name                                           
     Parameters
+    ======================  
=====================================================   =============
+    Changelist              ``admin_{{ app_label }}_{{ model_name 
}}_changelist``
+    Add                     ``admin_{{ app_label }}_{{ model_name }}_add``
+    History                 ``admin_{{ app_label }}_{{ model_name }}_history`` 
     ``object_id``
+    Delete                  ``admin_{{ app_label }}_{{ model_name }}_delete``  
     ``object_id``
+    Change                  ``admin_{{ app_label }}_{{ model_name }}_change``  
     ``object_id``
+    ======================  
=====================================================   =============
+
+Again, these names will be prefixed by the name of the :class:`AdminSite` in
+which they are deployed.
+
+So - if you wanted to get a reference to the Change view for a particular
+``Choice`` object (from the polls application) in the default admin, you would
+call::
+
+    >>> from django.core import urlresolvers
+    >>> c = Choice.objects.get(...)
+    >>> change_url = urlresolvers.reverse('admin_polls_choice_change', (c.id,))
+
+However, if the admin instance was named ``custom``, you would need to call::
+
+    >>> change_url = urlresolvers.reverse('custom_admin_polls_choice_change', 
(c.id,))


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to