현제의 현재이야기
[OSOD] 구독 이메일 관련 본문
class ContactView(APIView):
permission_classes = [AllowAny]
def get(self, request):
sub_users = User.objects.filter(subscription=True)
sub_unknowns = Subsription.objects.all()
today = datetime.now().date()
target_sentence = Sentence.objects.get(
created_at__year=today.year,
created_at__month=today.month,
created_at__day=today.day,
)
sub_users_list = [sub_user.email for sub_user in sub_users]
sub_unknowns_list = [sub_unknown.sub_email for sub_unknown in sub_unknowns]
send_list = sub_users_list + sub_unknowns_list
send_list = set(send_list)
send_list = list(send_list)
context = {
'created_at': target_sentence.created_at,
"day_of_the_week": get_day_of_the_week(target_sentence.created_at),
'sentence': target_sentence.sentence,
'discription': target_sentence.discription,
'translate': target_sentence.translate,
}
message = render_to_string('email_template.html', context)
subject = f"[OSOD] {get_day_of_the_week(target_sentence.created_at)}의 영작"
to = send_list
send_mail(
subject = subject,
message = "",
from_email = None,
recipient_list = to,
html_message = message
)
return Response(status.HTTP_201_CREATED)
- 구독 이메일을 보내는 view이다. 우선 User중에서 subscription 필드가 True인 사람들과 비로그인으로 구독 이메일을 기입한 사람들을 불러온 뒤, 하나로 합치고 set으로 바꿔주어 중복을 없애주었다.
- 그리고 오늘 구문을 불러낸다
- context 딕셔너리에 templates에 맞는 변수명으로 구문의 필드를 매칭시켜주고
- render_to_string으로 templatese에 context를 넣어준다.
- send_mail을 통해서 메일을 보내는데 여기서 templates는 html파일임으로, html_message로 보내야 정상적으로 html을 나타낸다.
- ㅋㅋㅋ 이렇게 출력된다 신기방기
'DRF > OSOD' 카테고리의 다른 글
[OSOD] DRF URL 파라미터 추출과 쿼리 파라미터 추출에 대한 고찰 (0) | 2023.02.19 |
---|---|
[OSOD] Timezone과 연속 학습 (0) | 2023.02.19 |
[OSOD] 비밀번호 변경 및 리셋 관련 (0) | 2023.02.16 |
[OSOD] SerializerMethodField()에 대하여 (0) | 2023.02.13 |
[OSOD] Nested Serializer 및 views.py 작성 (0) | 2023.02.04 |
Comments