.. _hooks_chapter: Using ZCML Hooks ================ ZCML "hooks" can be used to influence the behavior of the :mod:`repoze.bfg` framework in various ways. This is an advanced topic; very few people will want or need to do any of these things. Changing the request factory ---------------------------- You may change the class used as the "request factory" from within the :mod:`repoze.bfg` ``Router`` class (the ``Router`` class turns the WSGI environment into a "request" object which is used ubiquitously throughout :mod:`repoze.bfg`). The default "request factory" is the class ``webob.Request``. You may change it by placing the following ZCML in your ``configure.zcml`` file. .. code-block:: xml :linenos: Replace ``my.request.factory`` with the Python dotted name to the request factory you want to use. Changing the response factory ----------------------------- You may change the class used as the "response factory" from within the :mod:`repoze.bfg` ``chameleon_zpt``, ``chameleon_genshi``, ``chameleon_text`` (the ``render_template_to_response`` function used within each) and other various places where a Response object is constructed by :mod:`repoze.bfg`. The default "response factory" is the class ``webob.Response``. You may change it by placing the following ZCML in your ``configure.zcml`` file. .. code-block:: xml :linenos: Replace ``my.response.factory`` with the Python dotted name to the response factory you want to use.