[1.3.X] Fixed #16079: Clarified (for real this time) how handler404 and handler500 work, and that they only work in a root URLconf. Backport of [16804] from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.3.X@16805 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
James Bennett 2011-09-11 04:06:29 +00:00
parent 5e451b9e6f
commit 2954c36ff7
3 changed files with 41 additions and 21 deletions

View File

@ -357,11 +357,13 @@ the list is empty.
Write a 404 (page not found) view Write a 404 (page not found) view
================================= =================================
When you raise :exc:`~django.http.Http404` from within a view, Django will load When you raise :exc:`~django.http.Http404` from within a view, Django
a special view devoted to handling 404 errors. It finds it by looking for the will load a special view devoted to handling 404 errors. It finds it
variable ``handler404``, which is a string in Python dotted syntax -- the same by looking for the variable ``handler404`` in your root URLconf (and
format the normal URLconf callbacks use. A 404 view itself has nothing special: only in your root URLconf; setting ``handler404`` anywhere else will
It's just a normal view. have no effect), which is a string in Python dotted syntax -- the same
format the normal URLconf callbacks use. A 404 view itself has nothing
special: It's just a normal view.
You normally won't have to bother with writing 404 views. By default, URLconfs You normally won't have to bother with writing 404 views. By default, URLconfs
have the following line up top:: have the following line up top::
@ -393,9 +395,9 @@ Four more things to note about 404 views:
Write a 500 (server error) view Write a 500 (server error) view
=============================== ===============================
Similarly, URLconfs may define a ``handler500``, which points to a view to call Similarly, your root URLconf may define a ``handler500``, which points
in case of server errors. Server errors happen when you have runtime errors in to a view to call in case of server errors. Server errors happen when
view code. you have runtime errors in view code.
Use the template system Use the template system
======================= =======================

View File

@ -54,6 +54,10 @@ algorithm the system follows to determine which Python code to execute:
:class:`~django.http.HttpRequest` as its first argument and any values :class:`~django.http.HttpRequest` as its first argument and any values
captured in the regex as remaining arguments. captured in the regex as remaining arguments.
5. If no regex matches, or if an exception is raised during any
point in this process, Django invokes an appropriate
error-handling view. See `Error handling`_ below.
Example Example
======= =======
@ -246,6 +250,31 @@ The ``prefix`` parameter has the same meaning as the first argument to
``patterns()`` and is only relevant when you're passing a string as the ``patterns()`` and is only relevant when you're passing a string as the
``view`` parameter. ``view`` parameter.
include
-------
.. function:: include(<module or pattern_list>)
A function that takes a full Python import path to another URLconf module that
should be "included" in this place.
:func:`include` also accepts as an argument an iterable that returns URL
patterns.
See `Including other URLconfs`_ below.
Error handling
==============
When Django can't find a regex matching the requested URL, or when an
exception is raised, Django will invoke an error-handling view. The
views to use for these cases are specified by two variables which can
be set in your root URLconf. Setting these variables in any other
URLconf will have no effect.
See the documentation on :ref:`customizing error views
<customizing-error-views>` for more details.
handler404 handler404
---------- ----------
@ -275,19 +304,6 @@ value should suffice.
.. versionchanged:: 1.2 .. versionchanged:: 1.2
Previous versions of Django only accepted strings representing import paths. Previous versions of Django only accepted strings representing import paths.
include
-------
.. function:: include(<module or pattern_list>)
A function that takes a full Python import path to another URLconf module that
should be "included" in this place.
:func:`include` also accepts as an argument an iterable that returns URL
patterns.
See `Including other URLconfs`_ below.
Notes on capturing text in URLs Notes on capturing text in URLs
=============================== ===============================

View File

@ -122,6 +122,8 @@ In order to use the ``Http404`` exception to its fullest, you should create a
template that is displayed when a 404 error is raised. This template should be template that is displayed when a 404 error is raised. This template should be
called ``404.html`` and located in the top level of your template tree. called ``404.html`` and located in the top level of your template tree.
.. _customizing-error-views:
Customizing error views Customizing error views
======================= =======================