123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- .. _ref-signals:
- =========================
- Built-in signal reference
- =========================
- A list of all the signals that Django sends.
- .. seealso::
- The :ref:`comment framework <ref-contrib-comments-index>` sends a :ref:`set
- of comment-related signals <ref-contrib-comments-signals>`.
- Model signals
- =============
- .. module:: django.db.models.signals
- :synopsis: Signals sent by the model system.
- The :mod:`django.db.models.signals` module defines a set of signals sent by the
- module system.
- .. warning::
- Many of these signals are sent by various model methods like
- :meth:`~django.db.models.Model.__init__` or
- :meth:`~django.db.models.Model.save` that you can overwrite in your own
- code.
- If you override these methods on your model, you must call the parent class'
- methods for this signals to be sent.
- pre_init
- --------
- .. attribute:: django.db.models.signals.pre_init
- :module:
- .. ^^^^^^^ this :module: hack keeps Sphinx from prepending the module.
- Whenever you instantiate a Django model,, this signal is sent at the beginning
- of the model's :meth:`~django.db.models.Model.__init__` method.
- Arguments sent with this signal:
- ``sender``
- The model class that just had an instance created.
- ``args``
- A list of positional arguments passed to
- :meth:`~django.db.models.Model.__init__`:
- ``kwargs``
- A dictionary of keyword arguments passed to
- :meth:`~django.db.models.Model.__init__`:.
- For example, the :ref:`tutorial <intro-tutorial01>` has this line:
- .. code-block:: python
- p = Poll(question="What's up?", pub_date=datetime.now())
- The arguments sent to a :data:`pre_init` handler would be:
- ========== ===============================================================
- Argument Value
- ========== ===============================================================
- ``sender`` ``Poll`` (the class itself)
- ``args`` ``[]`` (an empty list because there were no positional
- arguments passed to ``__init__``.)
- ``kwargs`` ``{'question': "What's up?", 'pub_date': datetime.now()}``
- ========== ===============================================================
- post_init
- ---------
- .. data:: django.db.models.signals.post_init
- :module:
- Like pre_init, but this one is sent when the :meth:`~django.db.models.Model.__init__`: method finishes.
- Arguments sent with this signal:
- ``sender``
- As above: rhe model class that just had an instance created.
- ``instance``
- The actual instance of the model that's just been created.
- pre_save
- --------
- .. data:: django.db.models.signals.pre_save
- :module:
-
- This is sent at the beginning of a model's :meth:`~django.db.models.Model.save`
- method.
- Arguments sent with this signal:
- ``sender``
- The model class.
- ``instance``
- The actual instance being saved.
- post_save
- ---------
- .. data:: django.db.models.signals.post_save
- :module:
-
- Like :data:`pre_save`, but sent at the end of the
- :meth:`~django.db.models.Model.save` method.
- Arguments sent with this signal:
- ``sender``
- The model class.
- ``instance``
- The actual instance being saved.
- ``created``
- A boolean; ``True`` if a new record was create.
- pre_delete
- ----------
- .. data:: django.db.models.signals.pre_delete
- :module:
-
- Sent at the beginning of a model's :meth:`~django.db.models.Model.delete`
- method.
- Arguments sent with this signal:
- ``sender``
- The model class.
- ``instance``
- The actual instance being saved.
- post_delete
- -----------
- .. data:: django.db.models.signals.post_delete
- :module:
-
- Like :data:`pre_delete`, but sent at the end of the
- :meth:`~django.db.models.Model.delete` method.
- Arguments sent with this signal:
- ``sender``
- The model class.
- ``instance``
- The actual instance being saved.
- Note that the object will no longer be in the database, so be very
- careful what you do with this instance
- class_prepared
- --------------
- .. data:: django.db.models.signals.class_prepared
- :module:
-
- Sent whenever a model class has been "prepared" -- that is, once model has
- been defined and registered with Django's model system. Django uses this
- signal internally; it's not generally used in third-party applications.
- Arguments that are sent with this signal:
- ``sender``
- The model class which was just prepared.
- Management signals
- ==================
- Signals sent by :ref:`django-admin <ref-django-admin>`.
- post_syncdb
- -----------
- .. data:: django.db.models.signals.post_syncdb
- :module:
- Sent by :djadmin:`syncdb` after it installs an application.
- Any handlers that listen to this signal need to be written in a particular
- place: a ``management`` module in one of your :setting:`INSTALLED_APPS`. If
- handlers are registered anywhere else they may not be loaded by
- :djadmin:`syncdb`.
- Arguments sent with this signal:
- ``sender``
- The ``models`` module that was just installed. That is, if
- :djadmin:`syncdb` just installed an app called ``"foo.bar.myapp"``,
- ``sender`` will be the ``foo.bar.myapp.models`` module.
- ``app``
- Same as ``sender``.
- ``created_models``
- A list of the model classes from any app which :djadmin:`syncdb` has
- created so far.
- ``verbosity``
- Indicates how much information manage.py is printing on screen. See
- the :djadminopt:`--verbosity`` flag for details.
- Functions which listen for :data:`post_syncdb` should adjust what they
- output to the screen based on the value of this argument.
- ``interactive``
- If ``interactive`` is ``True``, it's safe to prompt the user to input
- things on the command line. If ``interactive`` is ``False``, functions
- which listen for this signal should not try to prompt for anything.
- For example, the :mod:`django.contrib.auth` app only prompts to create a
- superuser when ``interactive`` is ``True``.
- Request/response signals
- ========================
- .. module:: django.core.signals
- :synopsis: Core signals sent by the request/response system.
- Signals sent by the core framework when processing a request.
- request_started
- ---------------
- .. data:: django.core.signals.request_started
- :module:
-
- Sent when Django begins processing an HTTP request.
- Arguments sent with this signal:
- ``sender``
- The handler class -- i.e.
- :class:`django.core.handlers.modpython.ModPythonHandler` or
- :class:`django.core.handlers.wsgi.WsgiHandler` -- that handled
- the request.
- request_finished
- ----------------
- .. data:: django.core.signals.request_finished
- :module:
-
- Sent when Django finishes processing an HTTP request.
- Arguments sent with this signal:
- ``sender``
- The handler class, as above.
- got_request_exception
- ---------------------
- .. data:: django.core.signals.got_request_exception
- :module:
-
- This signal is sent whenever Django encounters an exception while processing an incoming HTTP request.
- Arguments sent with this signal:
- ``sender``
- The handler class, as above.
- ``request``
- The :class:`~django.http.HttpRequest` object.
- Test signals
- ============
- .. module:: django.test.signals
- :synopsis: Signals sent during testing.
- Signals only sent when :ref:`running tests <topics-testing>`.
- template_rendered
- -----------------
- .. data:: django.test.signals.template_rendered
- :module:
-
- Sent when the test system renders a template. This signal is not emitted during
- normal operation of a Django server -- it is only available during testing.
- Arguments sent with this signal:
- sender
- The :class:`~django.template.Template` object which was rendered.
- template
- Same as sender
- context
- The :class:`~django.template.Context` with which the template was
- rendered.
|