Сигналы Django (Разъяснение сомнений)

Я новичок в Django и смотрю серию обучающих видео, где мы делали проект ... В этой серии они говорят о "сигналах".

Предлагается подключить некоторые сигналы в момент регистрации пользователя на странице

views.py

from django.shortcuts import render, redirect
from .models import *
from .forms import OrderForm, CustomerForm, CreateUserForm
from django.contrib import messages
from django.contrib.auth.models import Group
from django.contrib.auth.decorators import login_required
from .decorators import unauthenticated_user, allowed_users, admin_only

@unauthenticated_user
def registerPage(request):
    form_value = CreateUserForm
    if request.method == 'POST':
        form_value = CreateUserForm(request.POST)
        if form_value.is_valid():
            user = form_value.save()
            username = form_value.cleaned_data.get('username')
            messages.success(request, 'Account was create for {}'.format(username))
            return redirect('login')
        else:
            messages.warning(request, 'Data is invalid, please try again') 
    context = {'form_key':form_value}
    return render(request, 'accounts/register.html', context)

signals.py

from django.db.models.signals import post_save
from django.contrib.auth.models import User, Group
from .models import Customer

def customer_profile(sender, instance, created, **kwagrs):
    if created:
        group = Group.objects.get(name='customer')
        instance.groups.add(group)
        Customer.objects.create(
                user = instance,
                name = instance.username
            )
        print('Profile created.!')

post_save.connect(customer_profile, sender= User)

apps.py

from django.apps import AppConfig


class AccountsConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'accounts'
    def ready(self):
        import accounts.signals

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    'accounts',

    'django_filters',
]

Вот мои вопросы: 1) Какова работа функции 'ready()' в 'apps.py'?

2) В руководстве предлагается разместить 'accounts.apps.AccountsConfig' в файле 'settings.py' конкретно в секции 'INSTALLED_APPS', нужно ли это делать?

3) Другой метод, предложенный учебником, заключается в том, чтобы поместить default_app_config = 'accounts.apps.AccountsConfig' в файл 'init.py' ... Какой из них наиболее рекомендуемый?

Использование этих сигналов кажется супер практичным для развития функциональности проекта наилучшим образом. Поэтому я хочу понять эти вещи как можно яснее, большое спасибо за помощь

Вернуться на верх