SignalerLink to this heading
En lista över alla signaler som Django skickar. Alla inbyggda signaler skickas med hjälp av send()-metoden.
ModellsignalerLink to this heading
Modulen django.db.models.signals definierar en uppsättning signaler som skickas av modellsystemet.
pre_initLink to this heading
- django.db.models.signals.pre_initLink to this definition
När du instansierar en Django-modell skickas den här signalen i början av modellens metod __init__().
Argument som skickas med denna signal:
- avsändare
Den modellklass som just fått en instans skapad.
argsEn lista med positionella argument som skickas till
__init__().kwargsEn ordlista med nyckelordsargument som skickas till
__init__().
Till exempel: har tutorial den här raden:
q = Question(question_text="What's new?", pub_date=timezone.now())
De argument som skickas till en pre_init hanterare skulle vara:
Argument |
Värde |
|---|---|
avsändare |
|
|
|
|
|
post_initLink to this heading
- django.db.models.signals.post_initLink to this definition
Som pre_init, men den här skickas när metoden __init__() är klar.
Argument som skickas med denna signal:
- avsändare
Som ovan: modellklassen som just har fått en instans skapad.
instansDen faktiska instansen av den modell som just har skapats.
pre_saveLink to this heading
- django.db.models.signals.pre_saveLink to this definition
Detta skickas i början av en modells save()-metod.
Argument som skickas med denna signal:
- avsändare
Modellklassen.
instansDen faktiska instans som sparas.
rawEn boolean;
Trueom modellen sparas exakt som den presenteras (t.ex. vid laddning av en fixture). Man bör inte fråga/ändra andra poster i databasen eftersom databasen kanske inte är i ett konsekvent tillstånd ännu.använderDet databasalias som används.
uppdatera_fältDen uppsättning fält som ska uppdateras enligt
Model.save(), ellerNoneomupdate_fieldsinte skickades tillsave().
post_saveLink to this heading
- django.db.models.signals.post_saveLink to this definition
Som pre_save, men skickas i slutet av metoden save().
Argument som skickas med denna signal:
- avsändare
Modellklassen.
instansDen faktiska instans som sparas.
skapadEn boolean;
Trueom en ny post skapades.rawEn boolean;
Trueom modellen sparas exakt som den presenteras (t.ex. vid laddning av en fixture). Man bör inte fråga/ändra andra poster i databasen eftersom databasen kanske inte är i ett konsekvent tillstånd ännu.använderDet databasalias som används.
uppdatera_fältDen uppsättning fält som ska uppdateras enligt
Model.save(), ellerNoneomupdate_fieldsinte skickades tillsave().
pre_deleteLink to this heading
- django.db.models.signals.pre_deleteLink to this definition
Skickas i början av en models delete()-metod och en querysets delete()-metod.
Argument som skickas med denna signal:
- avsändare
Modellklassen.
instansDen faktiska instans som raderas.
använderDet databasalias som används.
ursprungDen instans av
ModelellerQuerySetfrån vilken borttagningen skedde, dvs. den instans vars metoddelete()anropades.
post_deleteLink to this heading
- django.db.models.signals.post_deleteLink to this definition
Som pre_delete, men skickas i slutet av en models delete()-metod och en querysets delete()-metod.
Argument som skickas med denna signal:
- avsändare
Modellklassen.
instansDen faktiska instans som raderas.
Observera att objektet inte längre kommer att finnas i databasen, så var mycket försiktig med vad du gör med denna instans.
använderDet databasalias som används.
ursprungDen instans av
ModelellerQuerySetfrån vilken borttagningen skedde, dvs. den instans vars metoddelete()anropades.
m2m_changedLink to this heading
- django.db.models.signals.m2m_changedLink to this definition
Skickas när en ManyToManyField ändras på en modellinstans. Strängt taget är detta inte en modellsignal eftersom den skickas av ManyToManyField, men eftersom den kompletterar pre_save/post_save och pre_delete/post_delete när det gäller att spåra ändringar i modeller, inkluderas den här.
Argument som skickas med denna signal:
- avsändare
Den mellanliggande modellklassen som beskriver
ManyToManyField. Denna klass skapas automatiskt när ett many-to-many-fält definieras; du kan komma åt den med hjälp av attributetthroughpå many-to-many-fältet.instansDen instans vars many-to-many-relation uppdateras. Detta kan vara en instans av
sender, eller av den klass somManyToManyFieldär relaterad till.handlingEn sträng som anger vilken typ av uppdatering som görs av relationen. Detta kan vara något av följande:
"pre_add"Skickas innan ett eller flera objekt läggs till i relationen.
"post_add"Skickas efter att ett eller flera objekt har lagts till i relationen.
"pre_remove"Skickas innan ett eller flera objekt tas bort från relationen.
"post_remove"Skickas efter att ett eller flera objekt har tagits bort från relationen.
"pre_clear"Skickas innan relationen är avklarad.
"post_clear"Skickas efter att relationen är avklarad.
omvändAnger vilken sida av relationen som uppdateras (dvs. om det är den framåtriktade eller omvända relationen som ändras).
modellKlassen för de objekt som läggs till i, tas bort från eller rensas från relationen.
pk_setFör åtgärderna
pre_addochpost_addär detta en uppsättning primärnyckelvärden som kommer att läggas till, eller har lagts till, i relationen. Detta kan vara en delmängd av de värden som lämnats in för att läggas till, eftersom inmatningar måste filtrera befintliga värden för att undvika ettIntegrityErrori databasen.För åtgärderna
pre_removeochpost_removeär detta en uppsättning primärnyckelvärden som skickades in för att tas bort från relationen. Detta är inte beroende av om värdena faktiskt kommer att tas bort eller har tagits bort. I synnerhet kan icke-existerande värden skickas in och visas då ipk_set, även om de inte har någon effekt på databasen.För åtgärderna
pre_clearochpost_clearär dettaNone.använderDet databasalias som används.
Till exempel:, om en Pizza kan ha flera Topping-objekt, modellerade så här:
class Topping(models.Model):
# ...
pass
class Pizza(models.Model):
# ...
toppings = models.ManyToManyField(Topping)
Om vi ansluter en hanterare så här:
from django.db.models.signals import m2m_changed
def toppings_changed(sender, **kwargs):
# Do something
pass
m2m_changed.connect(toppings_changed, sender=Pizza.toppings.through)
och gjorde sedan något liknande:
>>> p = Pizza.objects.create(...)
>>> t = Topping.objects.create(...)
>>> p.toppings.add(t)
de argument som skickas till en m2m_changed hanterare (toppings_changed i exemplet ovan) skulle vara:
Argument |
Värde |
|---|---|
avsändare |
|
|
|
|
|
|
|
|
|
|
|
|
|
Och om vi då skulle göra något sådant här:
>>> t.pizza_set.remove(p)
de argument som skickas till en m2m_changed hanterare skulle vara:
Argument |
Värde |
|---|---|
avsändare |
|
|
|
|
|
|
|
|
|
|
|
|
|
klass_förbereddLink to this heading
- django.db.models.signals.class_preparedLink to this definition
Skickas när en modellklass har ”förberetts”, det vill säga när en modell har definierats och registrerats i Djangos modellsystem. Django använder denna signal internt; den används vanligtvis inte i tredjepartsapplikationer.
Eftersom den här signalen skickas under appregisterpopulationsprocessen och AppConfig.ready() körs efter att appregistret är helt populerat, kan mottagare inte anslutas i den metoden. En möjlighet är att ansluta dem till AppConfig.__init__() istället, och se till att inte importera modeller eller utlösa anrop till appregistret.
Argument som skickas med denna signal:
- avsändare
Modellklassen som just var förberedd.
Ledningens signalerLink to this heading
Signaler skickade av django-admin.
pre_migrateLink to this heading
- django.db.models.signals.pre_migrateLink to this definition
Skickas av kommandot migrate innan det börjar installera ett program. Det sänds inte ut för program som saknar en models-modul.
Argument som skickas med denna signal:
- avsändare
En
AppConfig-instans för den applikation som ska migreras/synkroniseras.app_configSamma som
avsändare.verbosityAnger hur mycket information
manage.pyskriver ut på skärmen. Se flaggan--verbosityför mer information.Funktioner som lyssnar efter
pre_migratebör justera vad de matar ut på skärmen baserat på värdet av detta argument.interaktivOm
interactiveärTrueär det säkert att uppmana användaren att mata in saker på kommandoraden. OminteractiveärFalseska funktioner som lyssnar på denna signal inte försöka uppmana till något.Till exempel: uppmanar
django.contrib.auth-appen bara till att skapa en superanvändare närinteractiveärTrue.stdoutEtt strömliknande objekt som kan användas för att omdirigera verbose-utdata.
använderAliaset för den databas som ett kommando ska användas på.
planDen migreringsplan som kommer att användas för migreringskörningen. Planen är inte ett publikt API, men detta möjliggör de sällsynta fall då det är nödvändigt att känna till planen. En plan är en lista med 2-tuples där det första objektet är en instans av en migreringsklass och det andra objektet visar om migreringen rullades tillbaka (
True) eller tillämpades (False).appsEn instans av
Appssom innehåller projektets tillstånd före migreringskörningen. Den bör användas i stället för det globala registretappsför att hämta de modeller som du vill utföra åtgärder på.
post_migreraLink to this heading
- django.db.models.signals.post_migrateLink to this definition
Skickas i slutet av kommandona migrate (även om inga migreringar körs) och flush. Det sänds inte ut för program som saknar en models-modul.
Den som hanterar den här signalen får inte ändra databasscheman eftersom det kan leda till att kommandot flush misslyckas om det körs under kommandot migrate.
Argument som skickas med denna signal:
- avsändare
En
AppConfig-instans för den applikation som just installerades.app_configSamma som
avsändare.verbosityAnger hur mycket information
manage.pyskriver ut på skärmen. Se flaggan--verbosityför mer information.Funktioner som lyssnar på
post_migratebör justera vad de matar ut på skärmen baserat på värdet av detta argument.interaktivOm
interactiveärTrueär det säkert att uppmana användaren att mata in saker på kommandoraden. OminteractiveärFalseska funktioner som lyssnar på denna signal inte försöka uppmana till något.Till exempel: uppmanar
django.contrib.auth-appen bara till att skapa en superanvändare närinteractiveärTrue.stdoutEtt strömliknande objekt som kan användas för att omdirigera verbose-utdata.
använderDet databasalias som används för synkronisering. Standard är databasen
default.planDen migreringsplan som användes för migreringskörningen. Planen är inte ett offentligt API, men detta möjliggör de sällsynta fall då det är nödvändigt att känna till planen. En plan är en lista med 2-tuples där det första objektet är en instans av en migreringsklass och det andra objektet visar om migreringen rullades tillbaka (
True) eller tillämpades (False).appsEn instans av
Appssom innehåller projektets tillstånd efter migreringskörningen. Den bör användas i stället för det globala registretappsför att hämta de modeller som du vill utföra åtgärder på.
Du kan till exempel registrera en återuppringning i en AppConfig så här:
from django.apps import AppConfig
from django.db.models.signals import post_migrate
def my_callback(sender, **kwargs):
# Your specific logic here
pass
class MyAppConfig(AppConfig):
...
def ready(self):
post_migrate.connect(my_callback, sender=self)
Signaler för begäran/svarLink to this heading
Signaler som skickas av kärnramverket när en begäran behandlas.
begäran_startadLink to this heading
- django.core.signals.request_startedLink to this definition
Skickas när Django börjar bearbeta en HTTP-begäran.
Argument som skickas med denna signal:
- avsändare
Hanteringsklassen - t.ex.
django.core.handlers.wsgi.WsgiHandler- som hanterade begäran.- omgivning
Den ordbok för ”miljö” som tillhandahålls för begäran.
”Begäran_avslutadLink to this heading
- django.core.signals.request_finishedLink to this definition
Skickas när Django avslutar leveransen av ett HTTP-svar till klienten.
Argument som skickas med denna signal:
- avsändare
Hanterarklassen, som ovan.
har fått undantag från begäranLink to this heading
- django.core.signals.got_request_exceptionLink to this definition
Denna signal skickas när Django stöter på ett undantag under behandlingen av en inkommande HTTP-begäran.
Argument som skickas med denna signal:
- avsändare
Oanvänd (alltid
None).begäranObjektet
HttpRequest.
Test av signalerLink to this heading
Signaler skickas endast när kör tester.
inställning_ändradLink to this heading
- django.test.signals.setting_changedLink to this definition
Denna signal skickas när värdet på en inställning ändras via kontexthanteraren django.test.TestCase.settings() eller django.test.override_settings() dekorator/kontexthanteraren.
Det skickas faktiskt två gånger: när det nya värdet tillämpas (”setup”) och när det ursprungliga värdet återställs (”teardown”). Använd argumentet enter för att skilja mellan de två.
Du kan också importera den här signalen från django.core.signals för att undvika import från django.test i situationer som inte är test.
Argument som skickas med denna signal:
- avsändare
Inställningshanteraren.
inställningNamnet på inställningen.
värdeVärdet på inställningen efter ändringen. För inställningar som ursprungligen inte finns, i fasen ”teardown”, är
valueNone.enterEn boolean;
Trueom inställningen tillämpas,Falseom den återställs.
template_renderedLink to this heading
- django.test.signals.template_renderedLink to this definition
Skickas när testsystemet renderar en mall. Denna signal sänds inte ut under normal drift av en Django-server - den är endast tillgänglig under testning.
Argument som skickas med denna signal:
Databas-omslagLink to this heading
Signaler som skickas av databasomslaget när en databasanslutning initieras.
anslutning_skapadLink to this heading
- django.db.backends.signals.connection_createdLink to this definition
Skickas när databasomslaget gör den första anslutningen till databasen. Detta är särskilt användbart om du vill skicka kommandon efter anslutningen till SQL-backend.
Argument som skickas med denna signal:
- avsändare
Databasens omslagsklass - t.ex.
django.db.backends.postgresql.DatabaseWrapperellerdjango.db.backends.mysql.DatabaseWrapper, etc.anslutningDen databasanslutning som öppnades. Detta kan användas i en konfiguration med flera databaser för att skilja på anslutningssignaler från olika databaser.