Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[DJUGL] Signals and AppConfig
Search
Ana Balica
October 06, 2015
Programming
0
290
[DJUGL] Signals and AppConfig
Django User Group in London meetup and my talk about "Signals and AppConfig" Rick and Morty style!
Ana Balica
October 06, 2015
Tweet
Share
More Decks by Ana Balica
See All by Ana Balica
[NDC London] HTTP: History & Performance
anabalica
0
480
[DjangoCon US] Testing in Django
anabalica
1
980
HTTP: History & Performance
anabalica
1
510
[DUTH] Testing in Django
anabalica
4
9.4k
[PyCon US 2016] To mock or not to mock, that is the question
anabalica
0
290
[DjangoCon Europe 2016] To mock or not to mock, that is the question
anabalica
0
360
[PyLadies London 2015] How to write a good commit message
anabalica
0
370
[EuroPython 2015] Demystifying Mixins with Django
anabalica
0
320
[DjangoCon Europe 2015] Demystifying Mixins with Django
anabalica
0
280
Other Decks in Programming
See All in Programming
The Sequel to a Dream of Ruby Parser's Grammar
ydah
1
220
AndroidアプリのUIバリエーションをあの手この手で確認する / Check UI variations of Android apps by various means
tkmnzm
1
190
KSPの導入・移行を前向きに検討しよう!
shxun6934
PRO
0
290
GraphQLの魅力を引き出すAndroidクライアント実装
morux2
3
800
Modernisation Progressive d’Applications PHP
hhamon
0
100
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
4
90k
Securify_エンジニア採用資料
3shake
0
110
Understand the mechanism! Let's do screenshots tests of Compose Previews with various variations / 仕組みから理解する!Composeプレビューを様々なバリエーションでスクリーンショットテストしよう
sumio
3
840
今インフラ技術をイチから学び直すなら
yuhta28
1
140
Rubyとクリエイティブコーディングの輪の広がり / The Growing Circle of Ruby and Creative Coding
chobishiba
1
270
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
510
サーバーレスで負荷試験!Step Functions + Lambdaを使ったk6の分散実行
shuntakahashi
6
1.6k
Featured
See All Featured
Code Review Best Practice
trishagee
62
16k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Six Lessons from altMBA
skipperchong
26
3.4k
Fontdeck: Realign not Redesign
paulrobertlloyd
80
5.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
26
3.9k
Why You Should Never Use an ORM
jnunemaker
PRO
53
8.9k
The Cost Of JavaScript in 2023
addyosmani
42
5.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
36
2.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
359
19k
Thoughts on Productivity
jonyablonski
66
4.2k
Clear Off the Table
cherdarchuk
91
320k
Happy Clients
brianwarren
96
6.6k
Transcript
SIGNALS AND APPCONFIG DJUGL October 6, 2015
@anabalica
Let’s get schwifty with !
from django.db.models.signals import post_save from django.dispatch import receiver from myapp.models
import MyModel @receiver(post_save, sender=MyModel) def my_handler(sender, **kwargs): pass # my_app/signals.py
from django.db.models.signals import pre_save from django.dispatch import receiver from myapp.models
import MyModel @receiver(pre_save, sender=MyModel) def my_handler(sender, **kwargs): pass # my_app/signals.py
Django<1.7? make sure that the module it’s in gets imported
early on so that the signal handling gets registered before any signals need to be sent
Django<1.7? make sure that the module it’s in gets imported
early on so that the signal handling gets registered before any signals need to be sent
Django<1.7? this makes your app’s models.py a good place to
put registration of signal handlers
from django.db import models from my_app import signals class MyModel(models.Model):
pass # my_app/models.py
None
CIRCULAR IMPORTS
from my_app import signals # my_app/__init__.py
None
AppConfig to the rescue
AppConfig is a registry of installed apps and available models
>>> from django.apps import apps >>> apps.get_app_config('admin').verbose_name 'Admin'
from django.apps import AppConfig class RickNMortyConfig(AppConfig): name = "rick_n_morty" verbose_name
= "Rick and Morty" # my_app/apps.py
INSTALLED_APPS = [ "my_app.apps.RickNMortyConfig", # ... ] # settings.py or
default_app_config = "my_app.apps.RickNMortyConfig" # my_app/__init__.py
None
from django.apps import AppConfig class RickNMortyConfig(AppConfig): name = "rick_n_morty" verbose_name
= "Rick and Morty” def ready(self): from my_app import signals # my_app/apps.py
• Loads the settings • Sets up logging • Initializes
the application registry
• Imports each item from INSTALLED_APPS • Imports the models
submodule if exists • Runs the ready() method of each app config
None