TIL

손성수·2023년 5월 29일
0

email 발송, validated_data 모듈 관리

import random,re
from django.core.mail import EmailMessage
  • random : 인증코드 발송을 위한 랜덤 모듈
  • re : email, password 검증을 위한 정규식 모듈
  • EmailMessage : email 발송을 위한 모듈



이메일 발송

def send_email(email):
	"""  """
    code = "".join([str(random.randint(0, 9)) for _ in range(6)])
    title = "email에 첨부될 제목"
    string = "email에 첨부될 내용"  + code
    content = string
    mail = EmailMessage(title,content,to=[email])
    mail.send()
    return code
  • 0~9의 랜덤한 숫자값을 6개 만들어 사용자에게 발송
  • code값을 리턴하는 모듈로
    View.py에서 데이터베이스에 저장하는 로직이 필요하다.



정규식, 람다함수를 이용한 데이터 검증

def validated_data(email,password,username):
	""" email,password,username 검증 """
    password_pattern = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"
    password_match = re.match(password_pattern, password)
    email_pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
    email_match = re.match(email_pattern, email)
    if not bool(password_match):
        return "비밀번호가 올바르지 않습니다."
    elif not bool(email_match):
        return "이메일이 올바르지 않습니다."
    check =[
        lambda element: len(element) == len(element.replace(" ", "")),
        # 공백이 포함 되어 있을 경우 False
        lambda element: True if (len(element) > 1 and len(element) < 21) else False,
        # 전달된 값의 개수가 1~20 사이일 경우 True
    ]
    for i in check:
        if not i(username):
            return "유저이름이 올바르지 않습니다."
    return True
profile
더 노력하겠습니다

0개의 댓글

관련 채용 정보