Для этой цели вы можете использовать сигналы. Каждый раз, когда ваше приложение создает новый экземпляр User
, нужно выполнить какое-то действие. В вашем случае вы должны подключить встроенный сигнал post_save
и существующую send_activation_code
функцию
Пример для вашего случая:
yourapp / сигналов.py:
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=User)
def send_activation_code_signal(sender, instance, created, **kwargs):
if created:
send_activation_code(instance.phone_number)
Кроме того, вам нужно импортировать сигналы в файл конфигурации вашего приложения
yourapp / app.py:
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
class YourAppConfig(AppConfig):
name = 'yourproject.yourapp'
verbose_name = _('yourapp')
def ready(self):
import yourproject.yourapp.signals
yourapp / __ init__.py:
default_app_config = 'yourproject.yourapp.apps.YourAppConfig'
Если вам не нужно отправлять код каждый раз, когда создается пользовательский экземпляр - вы можете указать больше операторов, например:
if created and instance.validated:
send_activation_code(instance.phone_number)
Там Вот еще несколько полезных встроенных сигналов в Django, проверьте документы Django Сигналы документов: https://docs.djangoproject.com/en/3.0/ref/signals/