diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/api/interfaces.rst | 8 | ||||
| -rw-r--r-- | docs/api/view.rst | 3 | ||||
| -rw-r--r-- | docs/narr/urldispatch.rst | 39 | ||||
| -rw-r--r-- | docs/whatsnew-1.3.rst | 48 |
4 files changed, 83 insertions, 15 deletions
diff --git a/docs/api/interfaces.rst b/docs/api/interfaces.rst index 3e68d2e9f..e024fcff7 100644 --- a/docs/api/interfaces.rst +++ b/docs/api/interfaces.rst @@ -5,6 +5,9 @@ .. automodule:: repoze.bfg.interfaces +Event-Related Interfaces +++++++++++++++++++++++++ + .. autoclass:: IAfterTraversal .. autoclass:: INewRequest @@ -13,4 +16,9 @@ .. autoclass:: IWSGIApplicationCreatedEvent +Other Interfaces +++++++++++++++++ + + .. autoclass:: IExceptionResponse + diff --git a/docs/api/view.rst b/docs/api/view.rst index e345a0015..f15f1bc0d 100644 --- a/docs/api/view.rst +++ b/docs/api/view.rst @@ -19,6 +19,7 @@ .. autoclass:: static :members: - .. autofunction:: append_slash_notfound_view + .. autofunction:: append_slash_notfound_view(context, request) + .. autoclass:: AppendSlashNotFoundViewFactory diff --git a/docs/narr/urldispatch.rst b/docs/narr/urldispatch.rst index 6e3a68c97..dd45c8d4d 100644 --- a/docs/narr/urldispatch.rst +++ b/docs/narr/urldispatch.rst @@ -1132,6 +1132,45 @@ general description of how to configure a not found view. .. note:: This feature is new as of :mod:`repoze.bfg` 1.1. +Custom Not Found View With Slash Appended Routes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There can only be one :term:`Not Found view` in any :mod:`repoze.bfg +application. Even if you use +:func:`repoze.bfg.view.append_slash_notfound_view` as the Not Found +view, :mod:`repoze.bfg` still must generate a ``404 Not Found`` +response when it cannot redirect to a slash-appended URL; this not +found response will be visible to site users. + +If you don't care what this 404 response looks like, and only you need +redirections to slash-appended route URLs, you may use the +:func:`repoze.bfg.view.append_slash_notfound_view` object as the Not +Found view as described above. However, if you wish to use a *custom* +notfound view callable when a URL cannot be redirected to a +slash-appended URL, you may wish to use an instance of the +:class:`repoze.bfg.view.AppendSlashNotFoundViewFactory` class as the +Not Found view, supplying a :term:`view callable` to be used as the +custom notfound view as the first argument to its constructor. For +instance: + +.. code-block:: python + + from repoze.bfg.exceptions import NotFound + from repoze.bfg.view import AppendSlashNotFoundViewFactory + + def notfound_view(context, request): + return HTTPNotFound('It aint there, stop trying!') + + custom_append_slash = AppendSlashNotFoundViewFactory(notfound_view) + config.add_view(custom_append_slash, context=NotFound) + +The ``notfound_view`` supplied must adhere to the two-argument view +callable calling convention of ``(context, request)`` (``context`` +will be the exception object). + +.. note:: The :class:`repoze.bfg.view.AppendSlashNotFoundViewFactory` + class is new as of BFG 1.3. + .. _cleaning_up_after_a_request: Cleaning Up After a Request diff --git a/docs/whatsnew-1.3.rst b/docs/whatsnew-1.3.rst index f0a7b87f7..07f63b9d6 100644 --- a/docs/whatsnew-1.3.rst +++ b/docs/whatsnew-1.3.rst @@ -235,21 +235,41 @@ Minor Feature Additions - The :func:`repoze.bfg.configuration.Configurator.add_route` API now returns the route object that was added. -- There can only be one Not Found view in any :mod:`repoze.bfg` - application. If you use +- New API class: + :class:`repoze.bfg.view.AppendSlashNotFoundViewFactory`. + + There can only be one :term:`Not Found view` in any :mod:`repoze.bfg + application. Even if you use :func:`repoze.bfg.view.append_slash_notfound_view` as the Not Found - view, it still must generate a 404 response when it cannot redirect - to a slash-appended URL; this not found response will be visible to - site users. As of this release, if you wish to use a custom - notfound view callable when - :func:`repoze.bfg.view.append_slash_notfound_view` does not redirect - to a slash-appended URL, use a wrapper function as the - :exc:`repoze.bfg.exceptions.NotFound` exception view; have this - wrapper attach a view callable which returns a response to the - request object named ``custom_notfound_view`` before calling - :func:`repoze.bfg.view.append_slash_notfound_view`. See - :func:`repoze.bfg.view.append_slash_notfound_view` for more - information. + view, :mod:`repoze.bfg` still must generate a ``404 Not Found`` + response when it cannot redirect to a slash-appended URL; this not + found response will be visible to site users. + + If you don't care what this 404 response looks like, and only you + need redirections to slash-appended route URLs, you may use the + :func:`repoze.bfg.view.append_slash_notfound_view` object as the Not + Found view. However, if you wish to use a *custom* notfound view + callable when a URL cannot be redirected to a slash-appended URL, + you may wish to use an instance of the + :class:`repoze.bfg.view.AppendSlashNotFoundViewFactory` class as the + Not Found view, supplying a :term:`view callable` to be used as the + custom notfound view as the first argument to its constructor. For + instance: + + .. code-block:: python + + from repoze.bfg.exceptions import NotFound + from repoze.bfg.view import AppendSlashNotFoundViewFactory + + def notfound_view(context, request): + return HTTPNotFound('It aint there, stop trying!') + + custom_append_slash = AppendSlashNotFoundViewFactory(notfound_view) + config.add_view(custom_append_slash, context=NotFound) + + The ``notfound_view`` supplied must adhere to the two-argument view + callable calling convention of ``(context, request)`` (``context`` + will be the exception object). Backwards Incompatibilities --------------------------- |
