2015-01-06 22 views
12

Tôi mới dùng django và tôi không thể hiểu cách làm việc với tín hiệu django. Bất cứ ai có thể vui lòng giải thích "tín hiệu django" với các ví dụ đơn giản?Django - tín hiệu. Ví dụ đơn giản để bắt đầu

Thanks in advance ..

+3

Bạn có thể cụ thể hơn? Sách hướng dẫn có một vài ví dụ đã có: https://docs.djangoproject.com/en/1.7/topics/signals/ – Wolph

Trả lời

19

Bạn có thể tìm nội dung rất tốt về tín hiệu django qua Internet bằng cách thực hiện nghiên cứu rất nhỏ.

Ở đây tôi sẽ giải thích cho bạn rất ngắn gọn về tín hiệu Django.
Tín hiệu Django là gì?
Tín hiệu cho phép người gửi nhất định để thông báo cho một tập hợp các máy thu mà một số hành động đã diễn ra

Actions: Phương pháp

mô hình của tiết kiệm() được gọi.
django.db.models.signals.pre_save | post_save

Phương thức delete() của mô hình được gọi.
django.db.models.signals.pre_delete | post_delete

ManyToManySửa đổi trên mô hình được thay đổi.
django.db.models.signals.m2m_changed

Django bắt đầu hoặc kết thúc yêu cầu HTTP.
django.core.signals.request_started | request_finished

Tất cả các tín hiệu đều là django.dispatch.Signal instances.

rất cơ bản Ví dụ:

models.py

from django.db import models 
from django.db.models import signals 

def create_customer(sender, instance, created, **kwargs): 
    print "Save is called" 

class Customer(models.Model): 
    name = models.CharField(max_length=16) 
    description = models.CharField(max_length=32) 

signals.post_save.connect(create_customer, sender=Customer) 

Shell

In [1]: obj = Customer(name='foo', description='foo in detail') 

In [2]: obj.save() 
Save is called 
3

Ngoài các Giải thích do Prashant, bạn cũng có thể sử dụng nhận trang trí hiện diện trong mô-đun django.dispatch.

ví dụ:

from django.db import models 
from django.db.models import signals 
from django.dispatch import receiver 

class Customer(models.Model): 
    name = models.CharField(max_length=16) 
    description = models.CharField(max_length=32) 

@receiver(signals.pre_save, sender=Customer) 
def create_customer(sender, instance, created, **kwargs): 
    print "customer created" 

Để biết thêm thông tin, tham khảo liên kết đưa ra dưới đây: - https://simpleisbetterthancomplex.com/tutorial/2016/07/28/how-to-create-django-signals.html