class User(models.Model):
...
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
create_profile(user=self)
send_user_email(user=self)
class CreateUserView(View):
...
def post(self, *args, **kwargs):
user = User.objects.create(...)
create_profile(user=user)
send_user_email(user=user)
return SomeHttpResponse(...)
class CreateUserApi(APIView):
...
def post(self, *args, **kwargs):
user = User.objects.create(...)
create_profile(user=user)
send_user_email(user=user)
return SomeHttpResponse(...)
def create_user(
*,
email: str,
name: str
) -> User:
user = User(email=email)
user.full_clean()
user.save()
create_profile(user=user, name=name)
send_user_email(user=user)
return user
class CreateUserApi(APIView):
class InputSerializer(Serializer):
email = serializers.EmailField()
name = serializers.CharField()
def post(self, data, *args, **kwargs):
serializer = self.InputSerializer(
data=request.data
)
serializer.is_valid(
raise_exception=True
)
data = serializer.validated_data
user = create_user(
email=data['email'],
name=data['name']
)
return SomeHttpResponse(...)