>本教程探索了Django信號,這是Django項目中強大的通信機制。 我們將介紹他們在維護模塊化和可擴展代碼,檢查內置信號的角色中的作用,並演示如何創建自定義信號。
>大型Django項目通常包含多個應用程序(例如,用戶管理,訂單,產品,電子商務系統中的付款)。儘管每個應用都關注特定功能,但它們必須無縫交互。信號促進了這種通信,允許應用程序對其他應用程序中的事件做出反應,而無需緊密耦合。例如,當應用程序確認訂單時,>應用程序可以更新庫存。 Django的信號調度器充當中介,實現了這種脫鉤的通信。 products
orders
>
> app更新了其庫存。
orders
products
>
>發件人和接收器:>
>信號發送者是發出信號的任何python對象。接收器是響應發送信號執行的Python函數或方法。請注意,某些信號(尤其是內置的信號)被發送,無論註冊接收器如何 設置示例django項目:>
為了說明信號使用情況,我們將創建一個示例電子商務項目: > django信號基礎:
>內置的django信號: django提供了許多內置信號,可通過 : >型號的 結論:
mkdir my_shop
virtualenv
使用pip install virtualenv
(使用virtualenv venv
安裝)。 創建並激活環境(pip install Django
django-admin startproject my_shop .
python manage.py startapp products
python manage.py startapp orders
和INSTALLED_APPS
。 將兩個應用程序添加到settings.py
>。
Product
)和products/models.py
>(inOrder
)的模型。 運行遷移(orders/models.py
和python manage.py makemigrations
)。 python manage.py migrate
>
Signal
receiver
。
django.dispatch
orders/signals.py
>order_confirmed = Signal()
>
import orders.signals
>import products.signals
>ready()
>apps.py
>在每個應用程序的order_confirmed.send(sender=order, ...)
> app的視圖中使用orders
在訂單確認後發送信號。 @receiver(order_confirmed)
>在接收到products/signals.py
>時,請使用order_confirmed
django.db.models.signals
>(型號信號)和django.core.signals
>(請求/響應信號)等模塊訪問。 示例包括pre_save
,post_save
,request_started
和request_finished
>
使用內置信號:@receiver(post_save, sender=Order)
>信號。
post_save
Order
實踐:
在創建新用戶時,
post_save
在User
模型上使用Customer
post_save
>在發布新評論時,將電子郵件通知發送給博客作者。 Comment
>
以上是了解Django中的信號的詳細內容。更多資訊請關注PHP中文網其他相關文章!