도장고. - 시그널.

2402 단어
인덱스: 추가 데이터마다 로그를 쓰고 싶습니다.
Django에서는 프레임에서 작업을 수행할 때 결합을 해제하는 신호 스케줄링을 제공합니다.통속적으로 말하면 일부 동작이 발생할 때 신호는 특정한 발송자가 일부 수용자를 일깨워 주는 것을 허락한다.
신호 분류
1. Django 내장 신호
Model signals
    pre_init                    # django modal        ,    
    post_init                   # django modal        ,    
    pre_save                    # django modal     ,    
    post_save                   # django modal     ,    
    pre_delete                  # django modal     ,    
    post_delete                 # django modal     ,    
    m2m_changed                 # django modal   m2m        (add,remove,clear)  ,    
    class_prepared              #      ,      app modal ,      ,    
Management signals
    pre_migrate                 #   migrate   ,    
    post_migrate                #   migrate   ,    
Request/response signals
    request_started             #      ,    
    request_finished            #      ,    
    got_request_exception       #      ,    
Test signals
    setting_changed             #   test         ,    
    template_rendered           #   test       ,    
Database Wrappers
    connection_created          #         ,    

Django에 내장된 신호의 경우 지정된 신호만 등록하고 프로그램이 해당 작업을 수행할 때 등록 함수를 자동으로 트리거합니다.
 from django.core.signals import request_finished
    from django.core.signals import request_started
    from django.core.signals import got_request_exception

    from django.db.models.signals import class_prepared
    from django.db.models.signals import pre_init, post_init
    from django.db.models.signals import pre_save, post_save
    from django.db.models.signals import pre_delete, post_delete
    from django.db.models.signals import m2m_changed
    from django.db.models.signals import pre_migrate, post_migrate

    from django.test.signals import setting_changed
    from django.test.signals import template_rendered

    from django.db.backends.signals import connection_created


    def callback(sender, **kwargs):
        print("xxoo_callback")
        print(sender,kwargs)

    xxoo.connect(callback)
    # xxoo        ,  pre_migrate
from django.core.signals import request_finished
from django.dispatch import receiver

@receiver(request_finished)
def my_callback(sender, **kwargs):
    print("Request finished!")

2. 사용자 정의 신호

좋은 웹페이지 즐겨찾기