#django #django-models #django-rest-framework #django-templates
Вопрос:
Я новичок в 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',
]
Это мои вопросы:
- В чем заключается работа функции ‘ready()’ в ‘apps.py»?
- В учебнике предлагается разместить » учетные записи.приложения.Учетная запись» в «settings.py» файл конкретно в разделе «INSTALLED_APPS», необходимо ли его размещать?
- Другой метод, предложенный в учебнике, состоит в том, чтобы разместить default_app_config = ‘учетные записи.приложения.AccountsConfig» в файле «init.py» .. Что наиболее рекомендуется?
Использование этих сигналов кажется очень практичным для наилучшего развития функциональности проекта. Вот почему я хочу понять эти вещи как можно яснее, большое вам спасибо за вашу помощь
Комментарии:
1. Пожалуйста, не используйте сигналы: django-antipatterns.com/antipattern/signals.html