13. services.py

ビジネスロジックを記述します。ビジネスロジックというと定義が難しそうですが、基本的には、managers.py, forms.py, serializers.pyなど、もしくはlibフォルダで共通して定義されていないことを記述してください。 例えば、外部の決済代行サービスAPIにデータを送信する、メール送信サービスを呼び出す、CSVのデータを読み込む、などです。

以下はユーザーが新規登録されたときにメールを送信する一例です

from django.conf import settings

from lib.email import send_simple_mail
from . import models


class UserService(object):
    def send_welcome(self):
        # welcomeメール送信
        subject = 'ようこそ!'
        template = 'welcome'
        login_url = 'https://{}{}'.format(settings.HOST_NAME, settings.LOGIN_URL)
        context = {'login_url': login_url}
        send_simple_mail(email, subject, template, context)