Django 프레임워크의 Django 신호
Django는 프레임워크의 다른 곳에서 작업이 발생할 때 알림을 받을 수 있도록 '신호 배달기' 를 제공합니다.즉, 특정 사건이 발생할 때 하나의 신호를 보내서 이 신호의 하나 또는 여러 개의 리셋을 등록했다고 통지하고 리셋에서 논리적으로 처리할 수 있다.
어떻게 신호를 감청합니까
Signal 실례 신호 리셋이 있습니다. 신호 리셋을 Signal 실례에 연결하여 특정 이벤트에서 Signal에서 신호를 보냅니다.
Django 내장 신호
django.db.models.signals.pre_save & post_save ㎡는 모델 save() 방법이 호출되기 전이나 이후에 전송됩니다.django.db.models.signals.pre_delete & post_모델 delete () 방법이나 조회 집합의 delete () 방법이 호출되기 전이나 이후에 발송됩니다.django.core.signals.request_started & request_finished ㎡Django에서 HTTP 요청을 설정하거나 닫을 때 보냅니다.
참조 문서
코드 주소:Spareibs의 Github
실험 조작
사용자 지정 신호
등록 신호
【signal.py】
from django.dispatch import Signal, receiver
signalAllen = Signal(providing_args=['allen'])
@receiver(signalAllen)
def signal_callback(sender, **kwargs):
print(sender, kwargs)
print('signal_callback called')
# ,
# signalAllen.connect(signal_callback)
#
@receiver(signalAllen)
def signal_callback1(sender, **kwargs):
print(sender, kwargs)
print('signal_callback1 called')
【urls.py】
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', view=views.index),
]
【views.py】
from . import signals
# Create your views here.
def index(request):
signals.signalAllen.send(sender=None, allen='test')
return render(request, template_name='index.html')
신호 삭제
【urls.py】
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^disconnect/$', view=views.disconnect_signal),
]
【views.py】
def disconnect_signal(request):
signals.signalAllen.disconnect(signals.signal_callback)
return render(request, template_name='index.html')
Django 내장 신호
간단한 사용
【views.py】
from django.shortcuts import render
from .models import Poem, Task
# Create your views here.
def modify(request):
poem = Poem.objects.get(pk=1)
poem.title = '1'
# pre_save post_save
poem.save()
task = Task.objects.get(pk=1)
task.name = '1'
task.save()
return render(request, template_name='index.html')
【urls.py】
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^modify/$', view=views.modify),
]
【singals.py】
from django.db.models.signals import pre_save, post_save
@receiver(pre_save)
def pre_save_callback(sender, **kwargs):
print('pre_save_callback')
@receiver(post_save)
def post_save_callback(sender, **kwargs):
print('post_save_callback')
지정 신호
【views.py】
from django.shortcuts import render
from .models import Poem, Task
# Create your views here.
def modify(request):
poem = Poem.objects.get(pk=1)
poem.title = '1'
# pre_save post_save
poem.save()
task = Task.objects.get(pk=1)
task.name = '1'
task.save()
return render(request, template_name='index.html')
【urls.py】
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^modify/$', view=views.modify),
]
【singals.py】
from django.db.models.signals import pre_save, post_save
from .models import Poem, Task
@receiver(pre_save, sender=Poem)
def pre_save_callback(sender, **kwargs):
print('pre_save_callback', sender, kwargs)
@receiver(post_save, sender=Task)
def post_save_callback(sender, **kwargs):
print('post_save_callback', sender, kwargs)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.