Django 의 신호 메커니즘 상세 설명
Django 에 신호 가 내장 되 어 있 습 니 다.예 를 들 어:
django.db.models.signals.pre_save Model
django.db.models.signals.post_save Model
django.db.models.signals.pre_delete Model
django.db.models.signals.post_delete Model
django.core.signals.request_started Http
django.core.signals.request_finished Http
우리 가 해 야 할 일 은 receiver 함 수 를 등록 하 는 것 이다.예 를 들 어 요청 이 끝 날 때마다 한 줄 의 글 자 를 인쇄 해 야 한다.리 셋 방식 으로 등록 할 수 있 습 니 다:
# receiver
def my_callback(sender, **kwargs):
print("Request finished!")
# connect
from django.core.signalsimport request_finished
request_finished.connect(my_callback)
장식 기 를 사용 하여 등록 할 수도 있 습 니 다.아래 의 이 코드 는 위 와 완전히 등가 입 니 다.
from django.core.signalsimport request_finished
from django.dispatchimport receiver
@receiver(request_finished)
def my_callback(sender, **kwargs):
print("Request finished!")
receiver 리 셋 함 수 는 sender 를 사용 할 수 있 는 것 외 에 다른 매개 변 수 를 사용 할 수 있 습 니 다.예 를 들 어 presave 함수:sender:발송 자(pre 라면save 라면 model class)
인 스 턴 스:인 스 턴 스
raw
using
update_fields
post_save()는 비교적 실 용적 인 함수 로 연 결 된 업 데 이 트 를 지원 할 수 있 습 니 다.매번 view 에 쓰 게 할 필 요 는 없습니다.예 를 들 어 어떤 사용자 가 환불 신청 을 제출 했 기 때문에 우 리 는 주문서 의 상 태 를'이미 환불 한'상태 로 수정 해 야 한다.모든 곳 에서 수정 할 필요 가 없 이 신호 체 제 를 사용 할 수 있다.
@receiver(post_save, sender=RefundForm)
deforder_state_update(sender, instance, created, **kwargs):
instance.order.state = REFUNDING
instance.order.save() # ,order refundform
물론 환불 취소 상태 등 더 주도면밀 하 게 쓸 수 있다.관찰 자 는 매우 실 용적 인 디자인 모델 로 Django 도 사용자 정의 신 호 를 지원 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.