Referência de sinais embutidos

Uma lista de todos os sinais que o Django envia.

Sinais de model

O módulo django.db.models.signals define um conjunto de sinais enviados pelo sistema de módels.

Warning

Muitos destes sinais são enviado por vário métodos de model como __init__() ou save() que você pode sobrescrever no seu próprio código.

Se você sobrescreve estes métodos no seu próprio model, você deve chamar os método da classe pai para que este sinal seja enviado.

Note também que o Django armazena manipuladores de sinais como referências fracas por padrão, então se seu manipulador for uma função local, ela poderia ser “garbage collected”. Para previnir isso, passe weak=False quando você chamar o método connect().

pre_init

django.db.models.signals.pre_init

Sempre que você instanciar um model do Django, este sinal é enviado no início do método __init__() do model.

Argumentos enviados com este sinal:

sender
A classe de model que acabou de ter uma instância criada.
args
Uma lista de argumentos posicionais passados para __init__():
kwargs
Um dicionário de argumentos nomeados passados para __init__():.

Por exemplo, o tutorial tem esta linha:

p = Poll(question="What's up?", pub_date=datetime.now())

Os argumentos enviados para um manipulador pre_init seriam:

Argumento Valor
sender Poll (a classe em si)
args [] (uma lista vazia, porque não houve argumentos posicionais passados para __init__.)
kwargs {'question': "What's up?", 'pub_date': datetime.now()}

post_init

django.db.models.signals.post_init

Como o pre_init, mas este é enviado quando o método __init__(): finaliza.

Argumentos enviados com este sinal:

sender
Como acima: a classe que acabou de ter uma instância criada.
instance
A instância atual do model que acabou de ser criado.

pre_save

django.db.models.signals.pre_save

Este é enviado no início do método save().

Argumentos enviardos com este sinal:

sender
A classe model.
instance
A instância atual sendo salva.

post_save

django.db.models.signals.post_save

Como pre_save, mas enviado ao final do método save().

Argumentos enviados com este sinal:

sender
A classe model.
instance
A instância atual sendo salva.
created
Um booleano; True se o novo dado foi criado.

pre_delete

django.db.models.signals.pre_delete

Enviado no início do método de model delete(). Argumentos enviados com este sinal:

sender
A classe model.
instance
A instância atual sendo criada.

post_delete

django.db.models.signals.post_delete

Como pre_delete, mas enviado ao final do método delete().

Argumentos enviados com este sinal:

sender
A classe model.
instance

A instância atual sendo criada.

Note que o objeto não estará mais no banco de dados, portanto seja muito cuidadoso com o que faz com esta instância.

class_prepared

django.db.models.signals.class_prepared

Enviado sempre que uma classe de model estiver sendo “preparada” – isto é, uma vez que o model tenha sido definido e registrado no sistema de model do Django. O Django usa este sinal internamente; ele geralmente não é usado em aplicações de terceiros.

Argumentos que são enviados com este sinal:

sender
A classe model que acabou de ser preparada.

Gerenciamento de sinais

Sinais enviados pelo django-admin.

post_syncdb

django.db.models.signals.post_syncdb

Enviado pelo syncdb depois de instalar uma aplicação.

Qualquer manipulador que ouve este sinal, precisa ser escrito num lugar específico: num módulo management numa de suas INSTALLED_APPS. Se o manipulador estiver registrado em algum outro lugar eles podem não ser carregados pelo syncdb.

Argumentos enviados com este sinal:

sender
O módulo models que acabou de ser instalado. Isto é, se o syncdb acabou de instalar uma aplicação chamada "foo.bar.myapp", o sender será o módulo foo.bar.myapp.models.
app
O mesmo que o sender.
created_models
Uma lista de classes model de qualquer applicação que o syncdb tenha criado até agora.
verbosity

Indica a quantidade de informações que o manage.py imprime na tela. Veja o flag --verbosity` para detalhes.

Funções que ouvem o post_syncdb deve ser ajustar o que vão mostrar na tela baseado no valor deste argumento.

interactive

Se interactive for True, ele assegura-se de abrir um prompt para usuário digitar coisas na linha de comando. Se o interactive for False, as funções que ouvem este sinal não devem tentar abrir um prompt para nada.

Por exemplo, a aplicação django.contrib.auth somente abre um prompt para criar um superusuário quando o interactive é True.

Sinais Request/response

Sinais enviados pelo core do framework quando processa uma requisição.

request_started

django.core.signals.request_started

Enviado quando o Django começar a processar uma requisição HTTP.

Argumentos enviados com este sinal:

sender
A classe manipuladora – i.e. django.core.handlers.modpython.ModPythonHandler ou django.core.handlers.wsgi.WsgiHandler – que manipula a requisição.

request_finished

django.core.signals.request_finished

Enviado quando o Django finaliza o processamento da requisição HTTP.

Argumentos enviados com este sinal:

sender
A classe manipuladora, como acima.

got_request_exception

django.core.signals.got_request_exception

Este sinal é enviado sempre que o Django encontra uma exceção enquanto processa uma chegada de requisição HTTP.

Argumentos enviados com este sinal:

sender
A classe manipuladora, como acima.
request
O objeto HttpRequest.

Sinais de Test

Sinais que somente são enviados quando estão rodando testes.

template_rendered

django.test.signals.template_rendered

Enviados quando o sistema de teste renderiza um template. Este sinal não é emitido durante uma operação normal do servidor do Django – ele somente está disponível durante o teste.

Argumentos enviados com este sinal:

sender
O objeto Template que foi renderizado.
template
O mesmo que o sender
context
O Context com que o template foi renderizado.