본문으로 바로가기

django normalize_email

category 장고/MTV 2019. 6. 21. 23:27

장고에서 normailize_email 메서드를 사용하기 전에 이해해야 할 내용

 

  • 정규화: 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화시킴
  • 이메일은 사용자계정@도메인 으로 구성된다.
  • DB 에서 질의를 할 때 정규화를 하지 않으면 리소스도 많이 소비되고, 특정 컬럼을 삭제 시에 에러가 발생하기도 하는 듯

 

□ Django 에서 normalize_email()

class BaseUserManager(models.Manager):

    @classmethod
    def normalize_email(cls, email):
        """
        Normalize the email address by lowercasing the domain part of it.
        """
        email = email or ''
        try:
            email_name, domain_part = email.strip().rsplit('@', 1)
        except ValueError:
            pass
        else:
            email = email_name + '@' + domain_part.lower()
        return email

- 코드를 보면 알 수 있듯이 @도메인 에 대한 정규화만 진행

- 정규화는 곧 소문자화

- try/except 그리고 else 문을 실행

 

 

□ normailize_email 에서 사용한 파이썬 기능들 간단하게 구현

>> email = 'Hello@World.Com'

# at 을 기준으로 언패킹(unpacking)
account, result = email.strip().rsplit('@', 1)

>> account
'Hello'

>> result
'World.Com'

>> result.lower()
'world.com'

 

'장고 > MTV' 카테고리의 다른 글

DRF 객체를 copy 하기  (0) 2019.06.22
list view 구현(multiple queryset list view)  (0) 2019.05.16
장고 한줄 정리  (0) 2019.05.15
장고 CRUD 기능 구현(4) Delete  (0) 2019.05.07
장고 CRUD 기능 구현(3) Update  (0) 2019.05.07