장고에서 normailize_email 메서드를 사용하기 전에 이해해야 할 내용
- 정규화: 관계형 데이터베이스에서
중복을 최소화
하기 위해 데이터를 구조화시킴 - 이메일은
사용자계정@도메인
으로 구성된다.- 사용자계정은 local 이라고 부르기도 한다.(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 |