1. 程式人生 > >Django——訊號量

Django——訊號量

django的某些操作發生時,會發出signals,可以截獲signals,並進行一些操作

下面程式碼是在建立新使用者完成時,截獲signals,把儲存的明文密碼修改為密文  

此app下建立signals.py 檔案

 

from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth import get_user_model

User = get_user_model()

@receiver(post_save,sender=User)
def create_user(sender, instance=None, created=False, **kwargs):
    if created:
        password= instance.password
        instance.set_password(password)
        instance.save()

最後,在apps.py中匯入接收函式,完成

 

from django.apps import AppConfig


class UsersConfig(AppConfig):
    name = 'users'
    verbose_name = '使用者中心'

    def ready(self):
        import users.signals

可能訊號量不生效  是因為settings配置問題 

INSTALLED_APPS = [
    'users',

修改為  這樣就會載入 def ready(self): 函式   訊號量才會生效

INSTALLED_APPS = [
    'users.apps.UsersConfig',